将字符串附加到if语句下的新列表中

时间:2018-04-20 21:40:19

标签: 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_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])

不幸的是,那里什么也没发生,甚至没有错误。

3 个答案:

答案 0 :(得分:1)

问题是startswith返回布尔值(TrueFalse)。然后,您正在检查x[i]是否等于布尔值,该值始终为false,因为它包含字符串。

改变条件应该有助于: if x[i].startswith("n_eff"):

答案 1 :(得分:0)

如果输出是多行的,则需要将其与split('\n')分开。

如果"<string>".startswith(<arg>)以参数字符串<string>开头,则函数<arg>返回True。您可以使用此函数检查字符串是否以指定的子字符串开头。

使用列表理解可以写成:

new_list = [x for x in output if x.startswith('\n')]

编辑时考虑输出一个列表。

答案 2 :(得分:0)

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',

...      &#39; n_eff_doping_center1_4.txt&#39;]

你想做这样的事吗?

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