只替换中括号之间的逗号 (csv 数据中可能存在逗号,注意处理)
方法一: 一个大三学弟写的,开拓了我的思路。
先找到[],会生成一个列表,把里面的逗号替换,然后把相应的位置用{}替换,之后format(*all)替换。
import re
def replace_dou(s):
"""中括号内逗号替换为顿号"""
sr = re.findall("\[.*?\]", s) # 查找中括号
no = re.sub(r"\[.*?\]", '{}', s) # 将整个中括号替换为{}
all = []
for i in range(len(sr)):
i = sr[i].replace(',', '、') # 替换
all.append(i)
ok = no.format(*all) # 列表拆分,逐个填入{}
print('替换如下:%s' % ok)
if __name__ == "__main__":
s = input('请输入要替换逗号的字符串:')
replace_dou(s)
方法二:群里的大佬帮忙写的,很强,足够我学习半天了。
def replace_commas(string: str,mark: str)->str:
_str = string
for match in re.finditer(r"(?<=\[)(.*?)(?=\])",_str):
start,end = match.span()
_str=_str[:start] + match.group().replace(",",mark)+_str[end:]
return _str