我正在使用以下函式在大寫字母上用逗號分隔字串,只要它前面沒有空格即可。
定義函式(x):
y = re.findall('[A-Z][^A-Z\s] (?:\s \S[^A-Z\s]*)*', x)
return ','.join(y)
但是,當我嘗試分隔下一個字串時,它會洗掉帶有數字的部分。
輸入 = '49ersRiders Mapple'
輸出 = 'Riders Mapple'
我嘗試了以下代碼,但現在它洗掉了“ers”部分。
定義測驗(x):
y = re.findall(r'\d [A-Z]*|[A-Z][^A-Z\s] (?:\s \S[^A-Z\s]*)*', x)
return ','.join(y)
輸出 = '49,Riders Mapple'
我正在尋找的輸出是這樣的:
'49ers,馬普爾騎士'
是否可以將此指示添加到我的正則運算式中?
提前致謝
uj5u.com熱心網友回復:
也許天真,但你為什么不使用re.sub:
def func(x):
return re.sub(r'(?<!\s)([A-Z])', r',\1', x)
inp = '49ersRiders Mapple'
out = func(inp)
print(out)
# Output
49ers,Riders Mapple
uj5u.com熱心網友回復:
這是一個正則運算式re.findall方法:
inp = "49ersRiders"
output = ','.join(re.findall('(?:[A-Z]|[0-9])[^A-Z] ', inp))
print(output) # 49ers,Riders
此處使用的正則運算式模式表示匹配:
(?:
[A-Z] a leading uppercase letter (try to find this first)
| OR
[0-9] a leading number (fallback for no uppercase)
)
[^A-Z] one or more non capital letters following
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/450675.html
標籤:python-3.x 正则表达式 熊猫 功能
上一篇:由于檔案格式不匹配,PySpark資料幀未保存在Hive中
下一篇:如何根據新列中的條件回傳列名
