所以我的代码应该处理线,看是否有线路坐标如何检查是否字符串在Python中
"x y z"
例如坐标特定的格式:
1.500 -6.002 0.007
用数字表示符号,如果是的话,我会处理这条线,但如果没有,我会保持它不变。我认为这将是正确的工具,但基于过去已经发生的不同情况,我对新技术太陌生了。
所以我的代码应该处理线,看是否有线路坐标如何检查是否字符串在Python中
"x y z"
例如坐标特定的格式:
1.500 -6.002 0.007
用数字表示符号,如果是的话,我会处理这条线,但如果没有,我会保持它不变。我认为这将是正确的工具,但基于过去已经发生的不同情况,我对新技术太陌生了。
正则表达式不是查看数字是否为浮点数的最佳选择。考虑到有效的浮点数可以采用的所有可能的形式,并且可能在未来的Python版本中使用,这很复杂。
因此,它更好地尝试来转换它,看看如果Python可以做到这一点,捕捉异常,如果它不能。
我会这样象下面这样:
def check_line(line_coord):
try:
return len([float(x) for x in line_coord.split()])==3
except ValueError:
return False
True
如果确定ValueError
例外,返回False
如果异常捕获测试:
print(check_line("10 4.5dd 5.6")) # bogus float in 2nd position
print(check_line("10 5.6")) # only 2 fields
print(check_line("10 -40 5.6")) # 3 fields, all floats
False
False
True
编辑:这仅上述检查如果值在这里。耶提出了一个方法,返回三重或None
如果错误,像这样:
def check_line(line_coord):
try:
x,y,z = map(float,line_coord.split())
return x,y,z
except ValueError:
return None
(map
是更快,因为它不会产生一个临时列表)。与以前相同的测试我们得到:
None
None
(10.0, -40.0, 5.6)
你可以做'try:x,y,z = map(float,line.split());返回x,y,z; ValueError除外:return None' – dawg
我可以添加一个浮动检查,如果符号inbetween坐标浮动是“”而不是“;”? (我有点儿睡不着,对不起) – Grak