簡體   English   中英

在python中替換與正則表達式匹配的字符

[英]Replace character that match regex in python

我想替換文本中出現的“,”。 我不想替換所有的“,”,因為它是一個csv文件。 因此,為此,我編寫了正則表達式,它在其中標識了包含不需要的逗號的文本。 我的regex101鏈接如下
http://regex101.com/r/vF2iO5

它正確地識別了我的文字

 "_id" : "Java code PMD Complains about Cyclomatic Complexity , of 20", "tags" : "java   performance tuning pmd", "title" : "Java code PMD Complains about Cyclomatic Complexity , of 20", "results" : true, "value" : true, "processed" : true, "tokenGenerated" : [ "java", "code", "pmd", "complains" ] 

它在鍵“ _id”和“標題”中標識包含逗號的文本的位置。 現在,我只想將文本中的這兩個逗號替換為其他符號,例如“ @@@”。 我怎樣才能做到這一點??

我的正則表達式是

\"[(\w)(\s)]+ (\,) [(\w)(\s)]+\"

編輯

如下在re.sub中使用python進行了嘗試。 但是我應該在替換部分寫些什么呢?

re.sub(r'(\"[(\w)(\s)]+\,[(\w)(\s)]+\")',r'\0',str(text)) 

您可以使用re.sub來做到這一點:

import re

s = '''"_id" : "Java code PMD Complains about Cyclomatic Complexity , of 20", "tags" : "java   performance tuning pmd", "title" : "Java code PMD Complains about Cyclomatic Complexity , of 20", "results" : true, "value" : true, "processed" : true, "tokenGenerated" : [ "java", "code", "pmd", "complains" ]'''

>>> print re.sub(r'(\"[(\w)(\s)]+ )(,)( [(\w)(\s)]+\")', '\\1@@@\\3', s)
"_id" : "Java code PMD Complains about Cyclomatic Complexity @@@ of 20", "tags" : "java   performance tuning pmd", "title" : "Java code PMD Complains about Cyclomatic Complexity @@@ of 20", "results" : true, "value" : true, "processed" : true, "tokenGenerated" : [ "java", "code", "pmd", "complains" ]

你可以用子

re.sub(r'(\\“ [(\\ w)(\\ s)] +)(,)([(\\ w)(\\ s)] + \\”)','@@@',s)' “ _id”:@@@,“ tags”:“ java性能調整pmd”,“ title”:@@@,“ results”:true,“ value”:true,“ processed”:true,“ tokenGenerated”:[ “ java”,“代碼”,“ pmd”,“投訴”]'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM