我正在尝试删除放在双引号内的短语之前和之后的空格。无论我在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."
请帮助。
答案 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” ...',因为每个撇号都有不同的处理方式(取决于开始还是结束),所以您必须匹配整个段,然后重复,这将导致捕获组的数量变化。我相信,即使是最理想的情况,也无法通过简单的正则表达式进行替换。我相信,您的问题还有更多的问题,这将使其变得更加不可能。
检查该网页,您将找不到更好的文档。