input_coords = "Some_text: 108,47,136" #case 1
input_coords = "Some_textjadd: 108 , 47 , 136" #case 2
input_coords = "Some_text: 108.5,47.9,136.6" #case 3
input_coords = "Ssssome_text: 180,,136" #case 4
input_coords = "Someddd_text: 180,47,13s6" #case 5 - FAIL case
并且在情況 1、2 和 3 中將坐標提取為浮點數
float x = 108
float y = 47
float z = 136
或者
float x = 108.5
float y = 47.9
float z = 136.6
但在其中一個坐標為空的情況 4 中,我想使用替換將缺失的坐標替換為 0,避免使用 None 值
float x = 108.5
float y = 0
float z = 136.6
并且情況 5 將是唯一一個不滿足正則運算式并會輸入例外的情況,因為這個想法是正則運算式檢測坐標值之一是否無法轉換為數字
input_coords = "Someddd_text: 180,47,13s6" #case 5 - FAIL case
while(True):
if():
REGEX IF CONDITION
else:
float x = none or previuos value
float y = none or previuos value
float z = none or previuos value
uj5u.com熱心網友回復:
我試圖找出一個可以處理這個問題的 RE,但沒有這樣做。但是,我可以為您提供:
input_coords = ["Some_text: 108,47,136",
"Some_textjadd: 108 , 47 , 136",
"Some_text: 108.5,47.9,136.6",
"Ssssome_text: 180,,136",
"Someddd_text: 180,47,13s6"]
def getcoordinates(s):
coords = []
for v in s.split(',')[-3:]:
if v:
coords.append(float(v.split()[-1]))
else:
coords.append(0.0)
return coords
for s in input_coords:
print(getcoordinates(s))
注意:當我們嘗試決議 '13s6' 時會引發 ValueError 例外
uj5u.com熱心網友回復:
我認為這就是你所追求的:https : //regex101.com/r/En9qFP/1/
# import the necessary packages
import re
input_coords = ["Some_text: 108,47,136",
"Some_textjadd: 108 , 47 , 136",
"Some_text: 108.5,47.9,136.6",
"Ssssome_text: 180,,136",
"Someddd_text: 180,47,13s6"]
for item in input_coords:
m = re.compile(r"(^. :)[0-9,.\s] $", re.IGNORECASE)
g = m.match(item)
if g:
print (item)
else:
print ("FAIL: " item)
# Some_text: 108,47,136
# Some_textjadd: 108 , 47 , 136
# Some_text: 108.5,47.9,136.6
# Ssssome_text: 180,,136
# FAIL: Someddd_text: 180,47,13s6
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367099.html
標籤:Python 蟒蛇-3.x 正则表达式 细绳 if 语句
上一篇:用變數替換字串
