[英]List of strings from split() cant convert to int()
我无法获取列表值以使int()
调用它们。 该列表是从用户input()
, split()
和append()
构建的。 代码如下:
coords = []
fcoords = input("Enter first coordinate pair:\n")
urlat, urlon = fcoords.split()
coords.append(urlat)
coords.append(urlon)
scoords = input("Enter second coordinate pair:\n")
lllat, lllon = scoords.split()
coords.append(lllat)
coords.append(lllon)
for coord in coords:
print (int(coord))
给我一个ValueError: invalid literal for int() with base 10: '-122.4444'
。
我可以用float(coord)
切换int(coord)
,但这只是额外的工作,因为我将十进制度转换为dms。 使用int()
得到没有余数的基数,这就是我想要的!
split()
方法在这里不正确,还是隐藏了额外的字符?
由于文字是-122.4444
,它代表一个浮点数; 首先将其转换为float,然后将其转换为int: print(int(float(coord)))
'-122.4444'
不是int,因此您无法将其解析为int。
如果您不想使用float(coord),您可以这样做:
print (int(coord.split('.')[0]))
这将忽略数字的小数部分,只取整数部分
你有一个匹配float的字符串,你试图将它转换为int,int不支持。 正如其他人建议使用int(float(your_str))。
所以问题不在于分裂,但是,您也可以使用可能更适合用户输入的regexp,因为它更灵活。
要匹配您可以使用的整数:
pattern = r'(^[-+]?[0-9]+)\.'
re.findall(pattern, your_input_string)
编辑:
Regexp可能无法正常工作,您必须进行测试
您不能将float
字符串更改为int
。
将您的split()
更改为:
urlat, urlon = fcoords.split('.')
和:
lllat, lllon = scoords.split('.')
你的代码会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.