Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用数字和单词从列表中提取特定项?_Python - Fatal编程技术网

如何在python中使用数字和单词从列表中提取特定项?

如何在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

我有一个给定格式的大量数据列表。我需要提取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]==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'``。因此,是“年”字符串给了他错误