所以我要為一個更大的程式撰寫一個代碼,但我被困在這個問題上。我的程式的輸入將是這樣的字串s="cycling;time:1,49;distance:2",我想要做的是讓程式只回傳提供的字串中的數字。我找到了如何做到這一點以及像這樣......
def getDigits(s):
answer = []
for char in s:
if char.isdigit():
answer.append(char)
return ''.join(answer)
print(getDigits(s="cycling;time:1,49;distance:2"))
但是,即使輸出列印出來1492,我也希望它單獨列印出來..所以基本上我想讓我的程式從 2 中單獨列印出 1,49,因為 1,49 是回圈時間,而 2 是距離(根據到字串輸入本身)。我應該對我的代碼進行哪些更改?
編輯:我的預期輸出將是這樣的...回圈時間值和距離值將按不同的方式分組
預期輸出:-
(149) (2)
uj5u.com熱心網友回復:
IIUC 這里是一個簡單的單行代碼來解決這個問題,它會回傳一個值串列(包括逗號):
def get_digits(s):
return [data.split(':')[1] for data in s.split(';') if ':' in data]
print(get_digits(s="cycling;time:1,49;distance:2"))
# Output:
# ['1,49', '2']
展開后看起來像這樣:
def get_digits(s):
answer = []
# iterate over the split string
for data in s.split(';'):
# check if semicolon is in that string so
# that when splitting there is a second value
if ':' in data:
# append the second item when splitting by colon
answer.append(data.split(':')[1])
return answer
有用:
str.split(有例子)
uj5u.com熱心網友回復:
我會像@heijp06 已經提到的那樣做。
def getDigits(s):
answer = []
t = '(' s.split(';')[1].split(':')[1] ')'
d = '(' s.split(';')[2].split(':')[1] ')'
return ''.join((t,d))
uj5u.com熱心網友回復:
做一些小改動。用“;”分割,然后回圈:
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
print(getDigits(s="cycling;time:1,49;distance:2"))
輸出 :
['149', '2']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349348.html
上一篇:堆疊串列項-至少需要一個向量
