我有
['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']
答案 0 :(得分:1)
好吧,您正在使用nested
循环来检查每个列表中的每个element
。当前在您的代码中检查元素中是否有miles
并返回它,如果不是,那么您只是附加与没有''
的元素相对应的miles
。
但是这里的逻辑是搜索每个列表的elements
,如果list
不包含所需的target
,那么我们需要代码来用Hey, I'm not there
进行回复。
因此,我们必须将generator
与next
函数一起使用。
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']