所以這里有一段代碼,它回傳給定 string 中的所有數字s。
def getDigits(s):
answer = []
for char in s.split(";"):
k = ""
for split_s in char:
if split_s.isdigit():
k = split_s
if k:
answer.append(k)
return answer
但是,如果s = 'hiking;time:106,01;distance:8.29'提供了輸入,對于distance:8.29,代碼回傳 829 不帶小數點。如何更改我的代碼,以便如果數字中有小數點,小數點也會回傳?
uj5u.com熱心網友回復:
改成:
if split_s.isdigit() or split_s in ".,":
您可能希望同時支持小數點和逗號以支持歐洲語言環境。如果只想支持小數點:
if split_s.isdigit() or split_s == ".":
uj5u.com熱心網友回復:
嚴格來說,@teambob 的回答可以解決問題。
話雖如此,您還沒有指定輸入中存在哪些約束。如果在數值背景關系之外可能有一個點或逗號,那將失敗。考慮使用正則運算式來提取它。
import re
def getDigits(s):
return re.findall('[0-9] [\.|\,]?[0-9]*', s)
此代碼['106,01', '8.29']為您的輸入生成。
uj5u.com熱心網友回復:
正如 teambob 所說,你的意思是這樣嗎
def getDigits(s):
answer = []
for char in s.split(";"):
k = ""
for split_s in char:
if split_s.isdigit() or split_s in ".,":
k = split_s
if k:
answer.append(k)
return answer
i=getDigits(s = 'hiking;time:106,01;distance:8.29')
print(i)
#output will be
#['106,01', '8.29']
這對你有用嗎?
uj5u.com熱心網友回復:
嘗試小pythonic:
>>> s = 'hiking;time:106,01;distance:8.29'
>>> dict(x.split(":") for x in s.split(";")[1:])
{'distance': '8.29', 'time': '106,01'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350194.html
