2024-04-27 13:17:47 发布
网友
我有一个文件有这样一行:
1,2,"toto , titi",3"titi ,, tata",4
我想把引号(")之间的逗号,替换成冒号:
"
,
:
所以我的结论应该是:
1,2,"toto : titi",3"titi :: tata",4
我正在考虑用"分割,但我认为有更好的方法。你知道吗
我认为,如果您使用csv模块解析CSV文件,如@Mateen Ulhaq和@Tom Karzes所述,将是最好的选择。你知道吗
但是,如果您不想使用这个模块,您可以自己实现它。假设你总是有正确(偶数)的引号你能做的是:
可以在单行中完成:
s = '1,2,"toto , titi",3"titi ,, tata",4' result = '"'.join(w.replace(',',':') if i%2 else w for i,w in enumerate(s.split('"')))
下面是另一个正则表达式:
>>> import re >>> >>> text = '1,2,"toto , titi",3"titi ,, tata",4' >>> re.sub(r'(".+?")', lambda m: m.group(1).replace(',', ':'), text) '1,2,"toto : titi",3"titi :: tata",4'
为此,可以使用正则表达式:
import re string = '1,2,"toto , titi",3"titi ,, tata",4' print(re.sub('".*?"', lambda x: x.group().replace(',', ':'), string)) #Output 1,2,"toto : titi",3"titi :: tata",4
在regex的帮助下,re模块中的sub方法被替换。你知道吗
re
sub
对于regex,应该使用非贪婪模式.*?,以避免,3被:3替换
.*?
,3
:3
您可以测试regex online
然后用lambda函数替换匹配组中的逗号。你知道吗
我认为,如果您使用csv模块解析CSV文件,如@Mateen Ulhaq和@Tom Karzes所述,将是最好的选择。你知道吗
但是,如果您不想使用这个模块,您可以自己实现它。假设你总是有正确(偶数)的引号你能做的是:
:
替换,
可以在单行中完成:
下面是另一个正则表达式:
为此,可以使用正则表达式:
在regex的帮助下,
re
模块中的sub
方法被替换。你知道吗对于regex,应该使用非贪婪模式
.*?
,以避免,3
被:3
替换您可以测试regex online
然后用lambda函数替换匹配组中的逗号。你知道吗
相关问题 更多 >
编程相关推荐