Есть ли более короткий способ удаления разрывов строк при чтении из файла в список?

#python #list #file-io #whitespace #strip

#питон #Список #файл-ввод-вывод #пробелы #Стриптиз #python #file-io

Вопрос:

Вот мой текущий код:

 dfile = open('dictionary.txt', 'r')
sfile = open('substrings.txt', 'r')
dictionary_words = []
substrings = []

for line in dfile:
    dictionary_words.append(line.rstrip('n'))
for line in sfile:
    substrings.append(line.rstrip('n'))
  

Это работает, но кажется довольно многословным.

Является ли это подходящим способом записать это, или я упускаю более простой процесс?

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

1. Ну, вы делаете одно и то же дважды подряд. Если ничего другого, вы могли бы, по крайней мере, преобразовать его в функцию или метод.

Ответ №1:

Попробуй это:

 with open('dictionary.txt', 'r') as f:
    dictionary_words = f.read().splitlines()
  

Ответ №2:

Либо используйте map :

 dictionary_words = map(lambda line: line.rstrip('n'), dfile)
  

или понимание списка:

 dictionary_words = [line.rstrip('n') for line in dfile]
  

Ответ №3:

Несколько менее многословной альтернативой является использование понимания списка:

 with open('dictionary.txt', 'r') as dfile:
  dictionary_words = [line.rstrip('n') for line in dfile]

with open('substrings.txt', 'r') as sfile:
  substrings  = [line.rstrip('n') for line in sfile]
  

Ответ №4:

Кажется, в вашем файле словаря есть одно слово в строке. Это может вам помочь:

 >>> words = [w.strip() for w in open('dictionary.txt').read().split('n')]
  

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

1. split(‘n’) оставляет пустую строку после последней строки. splitlines() позволяет избежать этого.

Ответ №5:

Как упоминает @Chris в комментарии, вы могли бы определить функцию:

 def words_fromfile(filename):
    with open(filename) as f:
         return f.read().splitlines()

dictionary_words = words_fromfile('dictionary.txt')
substrings = words_fromfile('substrings.txt')
  

Вы всегда можете изменить определение функции позже, если оно вам по какой-то причине не нравится, не касаясь остальной части кода.