繁体   English   中英

split()转换为int()的字符串列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM