[英]Python - Splitting numbers and letters into sub-strings with regular expression
我正在創建一個公制測量轉換器。 用戶應輸入諸如125km
(一個數字后跟單位縮寫)之類的表達式。 對於轉換,必須從縮寫中拆分數值,從而產生諸如[125, 'km']
。 我使用正則表達式re.split
完成了此re.split
,但是它會在結果列表中生成不需要的項目:
import re
s = '125km'
print(re.split('(\d+)', s))
輸出:
['', '125', 'km']
我不需要也不想要開頭''
。 如何簡單地將字符串的數字部分與字母部分分開以使用正則表達式生成列表?
re.findall
什么問題?
>>> s = '125km'
>>> re.findall(r'[A-Za-z]+|\d+', s)
['125', 'km']
[A-Za-z]+
匹配一個或多個字母。 |
或\\d+
一位或多位數字。
或者
使用列表理解。
>>> [i for i in re.split(r'([A-Za-z]+)', s) if i]
['125', 'km']
>>> [i for i in re.split(r'(\d+)', s) if i]
['125', 'km']
將字符串拆分為子字符串列表(數字和其他)
使用程序:
s = "125km1234string"
sub = []
char = ""
num = ""
for letter in s:
if letter.isdigit():
if char:
sub.append(char)
char = ""
num += letter
else:
if num:
sub.append(num)
num = ""
char += letter
sub.append(char) if char else sub.append(num)
print(sub)
輸出
['125', 'km', '1234', 'string']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.