我有這個字符串。a='SAD; Happy; ING:train coca'ORa='SAD; Happy; ING(train coca'ORa='SAD, Happy, ING[train coca'我需要檢測這個字符串:“; ING:”為此我使用了這個正則表達式:listRE=re.findall(r';\s*[A-Z]+\s*[\:|\[|\(]\s*[A-Z]+', a)我需要做的是刪除介于兩者之間的內容;和 :(并不總是 ; : 如正則表達式所示)我這樣做for i in listRE: p=re.compile(i) a=re.sub(p, r'', a)但它正在刪除我的文字!我的目標是:a='SAD; Happy; train coca'非常歡迎您的幫助 謝謝您的幫助
3 回答

RISEBY
TA貢獻1856條經驗 獲得超5個贊
您不需要使用findall——您可以直接使用匹配您需要的所有情況的正則表達式模式。我還修復了一些你的正則表達式:
import re
a = 'SAD; Happy; ING:train coca'
b = "SAD; Happy; ING(train coca"
c = "SAD, Happy, ING[train coca"
print(re.sub(r'(?<=;|,)(\s*)[^:[(;,]*[:[(]', r'\1', a))
print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", b))
print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", c))
"""
output:
SAD; Happy; train coca
SAD; Happy; train coca
SAD, Happy, train coca
"""
添加回答
舉報
0/150
提交
取消