簡體   English   中英

如何按照指示從字符串中分離所有數字?

[英]How can I seperate all the numbers from a string as indicated?

所以我要為一個更大的程序編寫代碼,但我被困在這個問題上。 我的程序的輸入將是這樣的字符串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)

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

有用:

我會像@heijp06 已經提到的那樣做。

def getDigits(s):
  answer = []
  t = '(' + s.split(';')[1].split(':')[1] + ')'
  d = '(' + s.split(';')[2].split(':')[1] + ')'
  return ''.join((t,d))

做一些小改動。 用“;”分割,然后循環:

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM