如何在python中使用数字和单词从列表中提取特定项?
我有一个给定格式的大量数据列表。我需要提取2000年的所有数据。对于以10为基数的int(),我得到了以下错误无效文本:“year”如何在python中使用数字和单词从列表中提取特定项?,python,Python,我有一个给定格式的大量数据列表。我需要提取2000年的所有数据。对于以10为基数的int(),我得到了以下错误无效文本:“year” ['title','country','year','val',] ['bm','china','1987','2200'] ['bm','japan','2000','1600'] ['bm','germany','2000','70'] #it doesnt seem to work new=[] for i in list: if i[2]==20
['title','country','year','val',]
['bm','china','1987','2200']
['bm','japan','2000','1600']
['bm','germany','2000','70']
#it doesnt seem to work
new=[]
for i in list:
if i[2]==2000:
new.append(int(i))
你可以试试
new = [i for i in list[1:] if '2000' == i[2]]
“list”是python中的一个关键字。避免在代码中使用它的最佳实践。出现文字错误的原因是代码试图将字符串“Year”转换为int。请从转换中删除第一个列表(标题) 1,您不应该将变量命名为
list
,因为list
是Python的内置数据类型。您应该而不是将变量和函数命名为与内置类型和函数相同的名称。使用其他内容,例如mylist
第二,它可能不起作用,因为您正在循环中包含列表['title'、'country'、'year'、][/code>,并且i[2]
将“year”
,当您尝试将“year”
(一个字符串)强制转换为int时,它引发了错误
一个选项是跳过第一个看起来像标题的列表
mylist=[
['title'、'country'、'year'、'val'、],
[bm'、'china'、'1987'、'2200'],
[bm'、'japan'、'2000'、'1600'],
['bm'、'germany'、'2000'、'70']
]
新=[]
因为我在我的列表中[1:]:
年份=整数(i[2])
如果年份==2000年:
新增.附加(i)
打印(新)
#[bm]、[2000]、[bm]、[2000]、[1600]、[bm]、[2000]、[70']
如果您不知道i[2]
是否为有效整数值,另一个选项是尝试将其强制转换,如果失败则跳过它:
mylist=[
['title'、'country'、'year'、'val'、],
[bm'、'china'、'1987'、'2200'],
[bm'、'japan'、'2000'、'1600'],
['bm'、'germany'、'2000'、'70']
]
新=[]
对于mylist中的i:
尝试:
年份=整数(i[2])
除值错误外:
持续
如果年份==2000年:
新增.附加(i)
打印(新)
#[bm]、[2000]、[bm]、[2000]、[1600]、[bm]、[2000]、[70']
请注意,对于诸如['bm'、'japan'、'02000'、'1600']或['bm'、'japan'、'2000.0'、'1600']之类的情况,此操作将失败。
是的,示例提供的示例很小。在这种情况下,在处理数据之前应该先清理数据。根据问题中的语句``我得到的这个错误对于以10为基数的int()来说是无效的literal:'year'``。因此,是“年”字符串给了他错误