在从.txt读取名称到python列表时避免空行



我正在尝试从。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']

最新更新