所以我的代碼應該處理線,看是否有線路座標如何檢查是否字符串在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