Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串追加到if语句下的新列表_Python_Python 3.x_Numpy - Fatal编程技术网

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',…]
我想他可能也会对包含完整或部分路径的字符串有问题,但这肯定是主要问题。这正是我要寻找的。谢谢!不,这条路走得很好。