试图通过与 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入门。
使用正则表达式这一点。 写一个正则表达式,映入你的字符串,然后用它来代替它。
它应该是这个样子:
\"(\w*),\ (\w*)\"
这会引起你的杜兰戈和PC,二者的映射分成两组,当您更换它们,你以后使用。
像这样的事情? 加入适当的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)
类似下面:
st = "2,Kenny Chong,Core Tech - Rendering,\"Durango, PC\",55,Reopened"
res = re.sub(r'\"(.*),\ (.*)\"',lambda x : (" & ").join(re.findall(r'\"(.*),\ (.*)\"', st)[0]),st)