#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')
Вы всегда можете изменить определение функции позже, если оно вам по какой-то причине не нравится, не касаясь остальной части кода.