2016-02-11 2 views
0

У меня есть часть программы с помощью следующего кодаЧтение символов из файла в список

file1 = [line.strip()for line in open(sometext.txt).readlines()] 
print ((file1)[0]) 

и когда код выполняется это дает мне все содержимое текстового файла, который очень длинное предложение, Как я буду читать каждую букву и помещать ее в список, чтобы индексировать каждый символ отдельно? Я использовал функцию list(), которая, кажется, помещает весь текстовый файл в список, а не каждый символ.

+1

Вы можете использовать индекс для получения символа из текста - ex. «Привет, мир!» [0] '. Если вам нужен список, используйте «list (« hello world! »)' – furas

+0

Кстати: ваш код не печатает полный текст из файла, а только первую строку. Чтобы напечатать первый символ в первой строке, вам нужно 'print (file1 [0] [0])' – furas

ответ

1

Вы можете использовать file.read() вместо file.readlines():

file1 = [char for char in open(sometext.txt).read()] 

Вам не нужно список-понимание, однако; вместо этого вы можете сделать это:

file1 = list(open(sometext.txt).read()) 

Кроме того, как @furas упомянул в своем комментарии, вам не нужен список, чтобы индексировать. str также имеет метод под названием index, поэтому вы можете сказать file1 = open(sometext.txt).read() и по-прежнему сможете использовать file1.index(). Примечание. str также имеет метод find, который будет возвращать -1, если подстрока не найдена, вместо того, чтобы поднимать значение ValueError.

0

С read() достаточно. Плюс. если вы хотите сохранить список без \n и белых пространств, вы можете использовать:

char_list = [ch for ch in open('test.txt').read() if ch != '\n' if ch != ' '] 

Вы можете удалить if заявления, если вы хотите сохранить их.

Смежные вопросы