我正在尝试从。txt文件中读取名称列表到python,以便我可以使用它。
humans = ['Barry', 'Finn', 'John', 'Jacob', '', 'George', 'Ringo', '']
with open(p_to_folder / 'humans.txt', 'w') as f:#using pathlib for my paths
for h in humans:
f.write(f'{h}n')
我想要做的是读取。txt文件,这样我就可以再次处理名称,但省略空白。
我试过了
with open(p_to_folder / 'humans.txt', 'r') as f:#using pathlib for my paths
new_humans = [line.rstrip() for line in f.readlines() if line != '']
当我检查这个列表时,我得到
['Barry', 'Finn', 'John', 'Jacob', '', 'George', 'Ringo', '']
我可以直接输入
new_humans = [i for i in new_humans if i != '']
和
['Barry', 'Finn', 'John', 'Jacob', 'George', 'Ringo']
,但是我希望能够在一行中完成它,并且也要理解为什么我的if语句在原始列表推导中不起作用。
谢谢
试试这个
with open(p_to_folder / 'humans.txt', 'r+') as f:#using pathlib for my paths
new_humans = [line.rstrip() for line in f.readlines() if line.strip()]
你可以这样做:
with open(p_to_folder / 'humans.txt', 'r') as f:
new_humans = [line for line in f.read().splitlines() if line]
或:
with open(p_to_folder / 'humans.txt', 'r') as f:#using pathlib for my paths
new_humans = [line.strip() for line in f.readlines() if line != 'n']
输出:
['Barry', 'Finn', 'John', 'Jacob', 'George', 'Ringo']