Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何匹配特定字符并在它们遵循模式时排除它们_Python_Regex - Fatal编程技术网

Python 如何匹配特定字符并在它们遵循模式时排除它们

Python 如何匹配特定字符并在它们遵循模式时排除它们,python,regex,Python,Regex,我目前正在尝试用python清理csv中的一些数据。但是我的csv中的引号有问题,所以我希望你能帮助我用regex修复它 我的csv的一行如下所示: “我的名字”;"";“是”;“你好;“世界”;""; 是否可以匹配多个引号,但使其与分号之间的引号不匹配 "" -> match """ -> match ;""; -> not match 有人能解决我的问题吗?谢谢 致以最诚挚的问候。这似乎有效: ln = '"""My name";"";"is";""Hello ; W

我目前正在尝试用python清理csv中的一些数据。但是我的csv中的引号有问题,所以我希望你能帮助我用regex修复它

我的csv的一行如下所示:

“我的名字”;"";“是”;“你好;“世界”;"";

是否可以匹配多个引号,但使其与分号之间的引号不匹配

"" -> 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 ;