[英]Regular expressions: replace comma in string, Python
以某種方式對正則表達式在python中的工作方式感到困惑,我希望替換前面帶有字母的字符串中的所有逗號,后跟字母或空格。 例如:
2015,1674,240/09,PEOPLE V. MICHAEL JORDAN,15,15
2015,2135,602832/09,DOYLE V ICON, LLC,15,15
第一行有效地有6列,而第二行有7列。 因此,我試圖用空格(NL)替換第二行中的(N,L)之間的逗號,如下所示:
2015,2135,602832/09,DOYLE V ICON LLC,15,15
這是我到目前為止所嘗試的,但沒有成功:
new_text = re.sub(r'([\w],[\s\w|\w])', "", text)
我錯的任何想法?
非常感謝幫助!
您使用的圖案, ([\\w],[\\s\\w|\\w])
占用了字字符(=字母數字或下划線, [\\w]
a)之前,
,然后匹配的逗號,和然后匹配(並再次,消耗)1個字符 - 空格,單詞字符或文字|
(在字符類內部,管道字符被視為文字管道符號,而不是交替運算符)。
所以,主要的問題是\\w
匹配字母和數字。
您實際上可以利用外觀:
(?<=[a-zA-Z]),(?=[a-zA-Z\s])
請參閱正則表達式演示
(?<=[a-zA-Z])
是一個正面的背后,需要一個字母在它之前,
並且(?=[a-zA-Z\\s])
是一個需要一個字母的正向前瞻或逗號后面有空格。
這是一個Python演示 :
import re
p = re.compile(r'(?<=[a-zA-Z]),(?=[a-zA-Z\s])')
test_str = "2015,1674,240/09,PEOPLE V. MICHAEL JORDAN,15,15\n2015,2135,602832/09,DOYLE V ICON, LLC,15,15"
result = p.sub("", test_str)
print(result)
如果你仍然想使用\\w
,你可以使用相反的類\\W
在一個否定的字符類中排除數字和下划線:
(?<=[^\W\d_]),(?=[^\W\d_]|\s)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.