删除引号内的空格

时间:2018-11-22 18:38:06

标签: python regex

我正在尝试删除放在双引号内的短语之前和之后的空格。无论我在Google上找到什么,都可以删除空格,但是也可以删除引号前后的空格。

txt = "election laws \" are outmoded or inadequate and often ambiguous \" and should be changed."

# output:
"election laws\"are outmoded or inadequate and often ambiguous\"and should be changed."

这是代码:

import re

regex = r"(?<=[\"]) +| +(?=[\"])"

test_str = "election laws \" are outmoded or inadequate and often ambiguous \" and should be changed."

subst = ""

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0)

if result:
    print (result)

预期输出为:

"election laws \"are outmoded or inadequate and often ambiguous\" and should be changed."

请帮助。

4 个答案:

答案 0 :(得分:3)

我认为您不能使用正则表达式来执行此操作(至少不能在我的水平上进行此操作),您需要循环计算字符串并计数\"的出现以在count奇数之后或if之前删除空间。甚至...(并且仅在假定它们始终匹配的情况下才起作用)

编辑,其中引号总是匹配的,请参见Pedro Torres的答案

答案 1 :(得分:2)

您可以使用的修改后的代码版本为:

import re

regex = '\\"\s+([^"]+)\s+\\"'

test_str = "election laws \" are outmoded or inadequate and often ambiguous \" and should be changed \" second quotes \"."

subst = ""

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, '\"'+r'\1'+'\"' , test_str)

if result:
    print (result)

输出:

election laws "are outmoded or inadequate and often ambiguous" and should be changed "second quotes".

说明: 我将 \“ +空格+(任何)+空格+ \” 的匹配项替换为 \“ +(任何)+ \” 其中()表示捕获组。因此,我可以使用语法 r'\ 1'

引用此捕获组

答案 2 :(得分:1)

可能会先拆分字符串,然后再将其连接,然后对每个块进行不同的处理:

test_str = "election laws \" are outmoded or inadequate and often ambiguous \" and should be changed."
print(test_str)

test=test_str.split("\"")
test[1]=test[1].strip()
test = "\"".join(test)

print(test)

答案 3 :(得分:1)

我不认识python,但是不懂java。关于正则表达式的精彩页面是https://www.regular-expressions.info/,您可以使用它来适应给定的正则表达式或找到其他答案。

您的问题取决于,是否只有一对引号。如果只有一对,则答案存在,例如:正则表达式:  ^(。?“)?(。?)?”(。*)$ 替代  $ 1 $ 2“ $ 3

如果有多个配对,则必须担心配对的开始和结束。它们可以嵌套吗?您能保证单引号内的内容不能是单撇号吗?而且即使您可以做到所有并保证,也总是这样:'start“ end” start“ end” ...',因为每个撇号都有不同的处理方式(取决于开始还是结束),所以您必须匹配整个段,然后重复,这将导致捕获组的数量变化。我相信,即使是最理想的情况,也无法通过简单的正则表达式进行替换。我相信,您的问题还有更多的问题,这将使其变得更加不可能。

检查该网页,您将找不到更好的文档。