我有
['2013 (63 reg)', '76,869 miles', '2.0L','Manual', 'Diesel</li>\n</ul>']
['2011 (61 reg)', 'Estate', '2.0L', '135BHP','Manual', 'Diesel', '4 owners</li>\n</ul>']
['2011 (11 reg)', 'Saloon', '112,000 miles', '2.1L', '201BHP','Manual', 'Diesel', '4 owners', 'Partservice history</li>\n</ul>']
['2007 (07 reg)', 'Saloon', '98,000 miles','3.0L', '222BHP', 'Automatic', 'Diesel']
在数据框df中的数据列中我有此代码检查是否存在单词“ miles”(如果存在),它返回包含英里的字符串,否则返回空并将其存储在列表中
miles=[]
sub = 'miles'
for f in df['Data'] :
for text in f:
if sub in text:
miles.append(text)
else:
miles.append('')`
对于所有文本值,而不是每个列表,它返回' '
我哪里有这样的东西
['',
'76,869 miles',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'112,000 miles',
'',
'',
'',
'',
'',
'',
'',
'',
'98,000 miles',
'',
]
我想要的地方
['76,869 miles',
'',
'112,000 miles',
'98,000 miles']
只需删除else: miles.append(' ')
位。您的代码当前正在执行的操作是将一个空字符串附加到列表中,Python仍将其视为有效对象。因此,您将拥有:
miles=[]
sub = 'miles'
for f in df['Data'] :
for text in f:
if sub in text:
miles.append(text)
(我会对此发表评论,但没有足够的代表。)
data = [['2013 (63 reg)', '76,869 miles', '2.0L',
'Manual', 'Diesel</li>\n</ul>'],
['2011 (61 reg)', 'Estate', '2.0L', '135BHP',
'Manual', 'Diesel', '4 owners</li>\n</ul>'],
['2011 (11 reg)', 'Saloon', '112,000 miles', '2.1L', '201BHP',
'Manual', 'Diesel', '4 owners', 'Partservice history</li>\n</ul>'],
['2007 (07 reg)', 'Saloon', '98,000 miles',
'3.0L', '222BHP', 'Automatic', 'Diesel']]
new = [next((t for t in item if "miles" in t), "Miles Not Found")
for item in data]
print(new)
输出:
['76,869 miles', 'Miles Not Found', '112,000 miles', '98,000 miles']