gpt4 book ai didi

python - 正则表达式 : replace comma in string, Python

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:52 25 4
gpt4 key购买 nike

我对正则表达式在 python 中的工作方式感到困惑,我想替换字符串中所有以字母开头、后跟字母或空格的逗号。例如:

2015,1674,240/09,PEOPLE V. MICHAEL JORDAN,15,15
2015,2135,602832/09,DOYLE V ICON, LLC,15,15

第一行实际上有 6 列,而第二行有 7 列。因此,我试图用空格 (N L) 替换第二行中 (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] 之前消耗一个字符字符(= 字母数字或下划线,,) , 然后匹配逗号,然后匹配(再次消耗)1 个字符 - 空格、单词字符或文字 | (在字符类中,管道字符被认为是文字管道符号,而不是交替运算符)。

所以,主要问题是\w匹配字母和数字。

您实际上可以利用环视:

(?<=[a-zA-Z]),(?=[a-zA-Z\s])

参见 regex demo

(?<=[a-zA-Z])是一个积极的回顾,需要一个字母在 , 之前和 (?=[a-zA-Z\s])是一个积极的前瞻,需要在逗号之后出现一个字母或空格。

这是一个Python demo :

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)

参见 another regex demo

关于python - 正则表达式 : replace comma in string, Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35896540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com