我知道如何轉換例如:
'1-2=3^4/5' -> [1, '-', 2, '=', 3, '^', 4, '/', 5]
但如果讓我們說我想轉換:
'12-34=56^78/90' -> [12, '-', 34, '=', 56, '^', 78, '/', 90]
那我有問題。
我嘗試了幾件事,但它從來沒有完美地作業過 - 它要么有一個無法正常作業的邊緣情況,要么存在問題。例如,我遇到的問題之一是 int 的第一個數字之后的數字作為新元素重復。
如果有人能花一些時間來幫助我,我將不勝感激。
提前謝謝!
編輯:感謝大家的快速回答!但是,我對編程有點陌生,因此不熟悉所使用的模塊或方法。是否可以僅使用內置函式來完成?
uj5u.com熱心網友回復:
一個簡單的模式,選擇一些數字或非數字,就可以了
pat = re.compile(r"\d |\D")
parts = pat.findall("1-2=3^4/5")
print(parts) # ['1', '-', '2', '=', '3', '^', '4', '/', '5']
parts = pat.findall("12-34=56^78/90")
print(parts) # ['12', '-', '34', '=', '56', '^', '78', '/', '90']
uj5u.com熱心網友回復:
用于itertools.groupby按連續數字分組(使用 str.isdigit)
from itertools import groupby
s = '12-34=56^78/90'
res = ["".join(group) for k, group in groupby(s, key=str.isdigit)]
print(res)
輸出
['12', '-', '34', '=', '56', '^', '78', '/', '90']
uj5u.com熱心網友回復:
其他兩個答案是方式,方式更好。但是,如果您覺得必須在沒有任何匯入的情況下執行此操作,這里有一個解決方案。
s = '12-34=56^78/90'
output = []
section = []
for e in s:
try:
e = int(e)
section.append(e)
except ValueError:
output.append(''.join(map(str,section)))
output.append(e)
section = []
output.append(''.join(map(str,section)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317663.html
上一篇:獲取字串和字符之間的值c#
下一篇:合并串列中的重疊字串序列
