我想分割一個字符串到Python中的列表,取決於數字/非數字。 例如,如何分割字符串(使用正則表達式?)取決於數字/而不是數字
5 55+6+ 5/
應該返回
['5','55','+','6','+','5','/']
我在其中循環遍歷字符串中的字符,並使用re.match(「\ d」)或測試他們的那一刻一些代碼( 「\ d」)。我想知道是否有更好的方法來做到這一點。
PS:一定要使用Python 2.4
我想分割一個字符串到Python中的列表,取決於數字/非數字。 例如,如何分割字符串(使用正則表達式?)取決於數字/而不是數字
5 55+6+ 5/
應該返回
['5','55','+','6','+','5','/']
我在其中循環遍歷字符串中的字符,並使用re.match(「\ d」)或測試他們的那一刻一些代碼( 「\ d」)。我想知道是否有更好的方法來做到這一點。
PS:一定要使用Python 2.4
假設需要+
和5間6進行匹配(你缺少哪個)兼容,
>>> import re
>>> s = '5 55+6+ 5/'
>>> re.findall(r'\d+|[^\d\s]+', s)
['5', '55', '+', '6', '+', '5', '/']
如果順序並不重要,你可以做2拆分:
re.split('\D+', mystring)
re.split('\d+', mystring)
但是,從您的輸入,它看起來可能是數學...在這種情況下,順序會很重要。 :)
您最好使用re.findall
,如在其他答案之一。
是的,它是一個反向波蘭符號計算器 - 訂單絕對重要! – rikkit 2010-11-19 04:15:29
這是一個最簡單的一個:)
re.findall('\d+|[^\d]+','134aaaaa')
它不吃空間,嘗試它的示例輸入... – 2010-11-18 19:19:59
使用findall
或finditer
:
>>> re.findall(r'\d+|[^\s\d]+', '5 55+6+ 5/')
['5', '55', '+', '6', '+', '5', '/']
符號化,我認爲? – delnan 2010-11-18 19:09:21
是的,差不多。這是一個反向波蘭記號計算器,所以我不能假設角色之間總是有一個空格(不知道有什麼我想做的名字,直到現在,但感謝告訴我)。 – rikkit 2010-11-19 04:18:00