Python to replace a symbol between between 2 words

2019-11-05 01:46发布

试图通过 2个字杜兰戈和PC在第二线之间,以取代逗号 ,然后删除引号“,以及同样与奥比斯和PC三线我想保留使用Python行的其余部分:

2,SIN-Rendering,Core Tech - Rendering,PC,147,Reopened
2,Kenny Chong,Core Tech - Rendering,"Durango, PC",55,Reopened
3,SIN-Audio,AAA - Audio,"Orbis, PC",13,Open
...
... 
...

像这些,就不可能有我的样本中100行。 因此,预期输出是:

2,SIN-Rendering,Core Tech - Rendering,PC,147,Reopened
2,Kenny Chong,Core Tech - Rendering, Durango & PC,55,Reopened
3,SIN-Audio,AAA - Audio, Orbis & PC,13,Open
...
...
...

到目前为止,我能想到的逐行读取线,然后如果行包含引号没有字符替换,但随后更换符号里面是什么我坚持了。

如何实现这一点,任何建议? Python入门。

Answer 1:

使用正则表达式这一点。 写一个正则表达式,映入你的字符串,然后用它来代替它。

它应该是这个样子:

\"(\w*),\ (\w*)\"

这会引起你的杜兰戈PC,二者的映射分成两组,当您更换它们,你以后使用。



Answer 2:

像这样的事情? 加入适当的if()如果你想切换逗号仅在第二行符号:

这一代码进入低谷的所有行与..., "..., ...", ... => ..., ... & ..., ...

import re

expr = r'2,Kenny Chong,Core Tech - Rendering,"Durango, PC",55,Reopened'

expr2 =  re.findall('"(.*?)"', expr)
if len(expr2)!=0:
    expr3 = re.split('"',expr)
    expr4 = expr3[0]+expr3[1].replace(","," &")+expr3[2]
    print(expr4)


Answer 3:

类似下面:

st = "2,Kenny Chong,Core Tech - Rendering,\"Durango, PC\",55,Reopened"
res = re.sub(r'\"(.*),\ (.*)\"',lambda x : (" & ").join(re.findall(r'\"(.*),\ (.*)\"', st)[0]),st)


文章来源: Python to replace a symbol between between 2 words in a quote