Python — как разделить файловый объект на список отдельных символов?

#python #python-3.x

#python #python-3.x

Вопрос:

Я импортирую данные из файлового объекта. Это довольно просто; это файл .txt, и данные были введены следующим образом: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Я пытаюсь представить его в виде списка отдельных символов, например

 my_list = ['A', 'B', 'C', 'D', ...etc.]
  

но это отображается так:

 my_list = ['ABCDEFGHIBJK... etc.]
  

Где я ошибаюсь?

 def split(string): 
    return [char for char in string] 

# This opens a file, gets a file object, and returns it to the program.
def get_file_object1():
    infile = open(r'#', 'r')
    file_object = infile.readlines()

    testing = split(file_object)   # this is a test line
    print(testing)                 # this is a test line
    print(split('This is another test.'))

    infile.close()
    return file_object
  

Примечание: когда я передаю файловый объект в split(file_object), я получаю следующее

 ['ABCDEFGHIJKLMNOPQRSTUVWXYZ']
  

Но когда я передаю строку текста в split (‘Это другая строка.’), я получаю это:

 ['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', 'n', 'o', 't', 'h', 'e', 'r', ' ',
 't', 'e', 's', 't', '.']
  

Ответ №1:

Просто, просто прочитайте и примените list() 😉

 with open(r'C:UsersLizDesktopPYTHON PROBLEMScipherUpper.txt') as f:
  myList = list(f.read().strip())
  

Получить myList в качестве вашего списка

Комментарии:

1. Именно то, что я искал. Спасибо!

Ответ №2:

Возвращаемый тип readlines() — list , поэтому вы в основном делаете это:

 string = ['ABC..', ...]
[char for char in string]
  

где char равно ‘ABC ..’

итак, вам нужно выполнить итерацию по результату readlines:

 testing = []
for line in f.readlines():
    testing = testing   split(line)
  

или прочитайте одну строку с readline() помощью instead .

Ответ №3:

split выполняется ли итерация объекта, который он получает

При передаче file_object строки файла повторяются. Существует только одна строка, поэтому вы получаете первую строку в виде строки.

 testing = split(file_object)   # >> ['ABCDEFGHIJKLMNOPQRSTUVWXYZ']
  

Когда вы передаете строку, символы строки повторяются, поэтому вы получаете список символов.

 print(split('This is another test.')) # >> ['T', 'h', 'i', 's', ....