python - 使用 Python 从 2000 年的列表中提取特定项目?
问题描述
我有下面给定格式的大量数据列表。我需要提取 2000 年的所有数据。但是当我尝试实现它时,我得到一个错误'invalid literal for int() with base 10:'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))
解决方案
第一,您不应该将变量命名为list
,因为list
它是 Python 的内置数据类型。您不应将变量和函数命名为与内置类型和函数相同的名称。使用其他东西,例如。mylist
.
第二,它可能不起作用,因为您将列表包含['title', 'country', 'year', 'val',]
在循环中,并且当您尝试将i[2]
(字符串)转换为 int 时,它会引发错误。"year"
"year"
一种选择是跳过第一个看起来像标题的列表。
mylist = [
['title','country','year','val',],
['bm','china','1987','2200'],
['bm','japan','2000','1600'],
['bm','germany','2000','70']
]
new=[]
for i in mylist[1:]:
year = int(i[2])
if year==2000:
new.append(i)
print(new)
# [['bm', 'japan', '2000', '1600'], ['bm', 'germany', '2000', '70']]
如果您不知道 是否i[2]
是有效的整数值,另一种选择是try
强制转换它,然后如果它失败则跳过它:
mylist = [
['title','country','year','val',],
['bm','china','1987','2200'],
['bm','japan','2000','1600'],
['bm','germany','2000','70']
]
new=[]
for i in mylist:
try:
year = int(i[2])
except ValueError:
continue
if year==2000:
new.append(i)
print(new)
# [['bm', 'japan', '2000', '1600'], ['bm', 'germany', '2000', '70']]
推荐阅读
- r - 如何在 R 中创建序列?
- javascript - 动态渲染表单元素并将它们保存在 ReactJS 中的数组中
- python - 在 wxPython 中填充快捷方式编辑器
- html - 正则表达式:尽可能匹配直到下一场比赛
- python - 如何在python中使用硒选择下拉列表的值
- javascript - 创建导航器时,未定义不是对象(评估 this.props.navigation.navigate)
- regex - 带有黑名单的骆驼案例的正则表达式
- java - 在 CN (Java) 中删除 0x0A 的 LDAP 记录
- python - 如何在 Python 中格式化语句和循环?
- python - 如何使用 Python 更新计划事件中的变量?