我不能使用正則運算式或庫 :(。我需要從字母數字字串中提取所有數字。每個連續的數字序列(我們可以稱為“溫度”)都被 ( 、- 或 *) 排除,并將被考慮作為單個數字(都是整數,沒有浮點數)。字串中還有其他非數字字符可以忽略。我需要將每個“溫度”提取到資料結構中。
示例字串 "BARN 21 77-48CDAIRY 87 56-12" 產生 [21, 77, 48, 87, 56, 12]
資料串可以大很多數量級。
我能找到的所有解決方案都假設字串中只有 1 個數字序列(溫度),或者(溫度)由空格/分隔符分隔。我能夠通過遍歷字串并在每個數字序列前后添加一個空格然后使用 split 來開始作業,但這感覺就像作弊。我想知道你們的專業人士是否為了一個快樂的解決方案而扭曲資料?
傳入資料 "BARN 21 77-48CDAIRY 87 56-12" temp 是我將資料更改為
temp = "BARN* 21 77 - 48 DAIRY* 87 56 - 12"
result = [int(i)
for i in temp.split()
if i.isdigit()]
print("The result ", result)
結果 [21, 77, 48, 87, 56, 12]
uj5u.com熱心網友回復:
這是一個不使用正則運算式的版本:
inp = "BARN21 77-48CDAIRY87 56-12"
inp = ''.join(' ' if not ch.isdigit() else ch for ch in inp).strip()
nums = inp.split()
print(nums) # ['21', '77', '48', '87', '56', '12']
如果您可以使用re.findall正則運算式,我們可以使用正則運算式模式\d :
inp = "BARN21 77-48CDAIRY87 56-12"
nums = re.findall(r'\d ', inp)
print(nums) # ['21', '77', '48', '87', '56', '12']
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362721.html
上一篇:回傳匹配數字位置的函式
下一篇:如何讓我的函式承認拼寫錯誤?
