Python 如何匹配特定字符并在它们遵循模式时排除它们
我目前正在尝试用python清理csv中的一些数据。但是我的csv中的引号有问题,所以我希望你能帮助我用regex修复它 我的csv的一行如下所示:Python 如何匹配特定字符并在它们遵循模式时排除它们,python,regex,Python,Regex,我目前正在尝试用python清理csv中的一些数据。但是我的csv中的引号有问题,所以我希望你能帮助我用regex修复它 我的csv的一行如下所示: “我的名字”;"";“是”;“你好;“世界”;""; 是否可以匹配多个引号,但使其与分号之间的引号不匹配 "" -> match """ -> match ;""; -> not match 有人能解决我的问题吗?谢谢 致以最诚挚的问候。这似乎有效: ln = '"""My name";"";"is";""Hello ; W
“我的名字”;"";“是”;“你好;“世界”;"";代码>
是否可以匹配多个引号,但使其与分号之间的引号不匹配
"" -> match
""" -> match
;""; -> not match
有人能解决我的问题吗?谢谢
致以最诚挚的问候。这似乎有效:
ln = '"""My name";"";"is";""Hello ; World"";"";'
ln_arr = ln.split(";")
print(ln_arr)
for i, val in enumerate(ln_arr):
if val != '""':
ln_arr[i] = ln_arr[i].replace('""','')
print(ln_arr)
ln = ';'.join(ln_arr)
print(ln)
输出:
['"""My name"', '""', '"is"', '""Hello ', ' World""', '""', '']
['"My name"', '""', '"is"', 'Hello ', ' World', '""', '']
"My name";"";"is";Hello ; World;"";
使用正向前向和后向:
import re
s='"""My name";"";"is";""Hello ; World"";"";'
In: re.sub(r'(?<=[^;"])"+|"+(?=[^;"])',r'@',s)
Out: '@My name@;"";@is@;@Hello ; World@;"";'
重新导入
s=“‘我的名字’;"";“是”;“你好;“世界”;"";'
In:re.sub(r')(?您是否尝试过找到一个可以自己解决问题的正则表达式模式?编写一个正则表达式来匹配您的输出是相当容易的,但我不确定这是您要问的。您希望从您给我们的csv行中获得什么输出?我希望使用re python模块中的re.sub函数来执行正则表达式。输入:““我的名字”“是”“你好;世界”“输出:“我的名字”“是”“你好;世界”;忽略hello world的颜色格式-这是由于stackoverflow的代码解析造成的“这不是假设在分号之外总是有双引号吗-如果这是必要的话,这没关系。@barry_allen你认为空格吗?我想这已经够好了-空格可以由\s*处理。向上投票。
(?<=[^;"])"+ matches quotes not preceeded by other quotes or ;
"+(?=[^;"]) matches quotes not followed by other quotes or ;