列表中的字符串匹配 - Python

时间:2016-06-13 14:21:38

标签: python string list

我有一个如下所示的列表 - 从此我已经过滤了以'测试开头的表格:SF.AcuraUsage _' (字符串匹配)

test:SF.AcuraUsage_20150311
test:SF.AcuraUsage_20150312
test:SF.AcuraUsage_20150313
test:SF.AcuraUsage_20150314
test:SF.AcuraUsage_20150315
test:SF.AcuraUsage_20150316
test:SF.AcuraUsage_20150317
test:SF.ClientUsage_20150318
test:SF.ClientUsage_20150319
test:SF.ClientUsage_20150320
test:SF.ClientUsage_20150321

我正在使用这个for循环,但不确定它为什么不起作用:

for x in list:
 if(x  'test:SF.AcuraUsage_'):
   print x

我试过了:

for x in list:
  alllist = x

vehiclelist = [x for x in alllist if x.startswith('geotab-bigdata-test:StoreForward.VehicleInfo')]

我仍然得到错误'字典对象没有属性开头'。

3 个答案:

答案 0 :(得分:3)

您不应该为列表list命名,因为它会覆盖内置类型list

但是,如果您想使用Python过滤该列表,请考虑使用此列表理解:

acura = [x for x in list if x.startswith('test:SF.AcuraUsage')]

然后,如果你想输出它

for x in acura:
    print(x)

答案 1 :(得分:0)

列表理解对此有好处。

获取包含以'测试开头的所有项目的列表:SF.AcuraUsage _' :

new_list = [x for x in list if x.startswith('test:SF.AcuraUsage_' ')]

的项目以' test开头:SF.AcuraUsage _' :

new_list = [x for x in list if not x.startswith('test:SF.AcuraUsage_' )]

答案 2 :(得分:0)

使用re模块:

import re
for x in list:
  ret = re.match('test:SF.AcuraUsage_(.*)',x)
  if ret:
    print(re.group())