Python 将字符串追加到if语句下的新列表
使用此行读取文件目录后Python 将字符串追加到if语句下的新列表,python,python-3.x,numpy,Python,Python 3.x,Numpy,使用此行读取文件目录后 x = glob.glob('**/*.txt', recursive = True) 我得到了这个输出 doping_center9_2.txt doping_center9_3.txt doping_center9_4.txt doping_center9_5.txt n_eff_doping_center1_1.txt n_eff_doping_center1_2.txt n_eff_doping_center1_3.txt n_eff_doping_center
x = glob.glob('**/*.txt', recursive = True)
我得到了这个输出
doping_center9_2.txt
doping_center9_3.txt
doping_center9_4.txt
doping_center9_5.txt
n_eff_doping_center1_1.txt
n_eff_doping_center1_2.txt
n_eff_doping_center1_3.txt
n_eff_doping_center1_4.txt
现在,我想创建另一个列表,并在字符串后面添加一个以n_eff
开头的字符串。我试过这个:
n_eff = []
for i in range(len(x)):
if x[i] == x[i].startswith("n_eff"):
n_eff.append(x[i])
不幸的是,那里没有发生任何事情,甚至没有发生错误。问题是
startswith
返回布尔值(True
或False
)。然后,您将检查x[i]
是否等于布尔值,该布尔值始终为false,因为它包含字符串
更改条件应有助于:
如果x[i].startswith(“n_eff”):
如果输出是多行的,则需要使用拆分('\n')
对其进行拆分
函数“”。如果
以参数字符串
开头,则startswith()返回True。您可以使用此函数检查字符串是否以指定的子字符串开头
使用列表理解,它可以写成:
new_list = [x for x in output if x.startswith('\n')]
编辑并输出一个列表
In [51]: x = '''doping_center9_2.txt
...: doping_center9_3.txt
...: doping_center9_4.txt
...: doping_center9_5.txt
...: n_eff_doping_center1_1.txt
...: n_eff_doping_center1_2.txt
...: n_eff_doping_center1_3.txt
...: n_eff_doping_center1_4.txt
...: '''.splitlines()
In [52]: x
Out[52]:
['doping_center9_2.txt',
'doping_center9_3.txt',
。。。
'n_eff_兴奋剂_center1_4.txt']
你想做这样的事吗
In [53]: for i in x:
...: if i.startswith('n_eff'):
...: print(i)
...:
n_eff_doping_center1_1.txt
n_eff_doping_center1_2.txt
n_eff_doping_center1_3.txt
n_eff_doping_center1_4.txt
返回结果列表,而不是多行字符串。是否确实没有与其关联的路径?当我运行时,我得到了['folder1/file1.txt','folder2/file2.txt',…]
我想他可能也会对包含完整或部分路径的字符串有问题,但这肯定是主要问题。这正是我要寻找的。谢谢!不,这条路走得很好。