我需要一种方法从字符串中删除所有空格,除非该空格在引号之间.
result = re.sub('".*?"', "", content)
Run Code Online (Sandbox Code Playgroud)
这将匹配引号之间的任何内容,但现在需要忽略该匹配并为空格添加匹配项.
我不认为你能用一个正则表达式做到这一点.做到这一点的方法之一是分割字符串的报价,应用空格剥离的正则表达式的结果列表中的所有其他项目,然后重新加入该列表.
import re
def stripwhite(text):
lst = text.split('"')
for i, item in enumerate(lst):
if not i % 2:
lst[i] = re.sub("\s+", "", item)
return '"'.join(lst)
print stripwhite('This is a string with some "text in quotes."')
Run Code Online (Sandbox Code Playgroud)
这是一个单行版本,基于@ kindall的想法 - 但它根本不使用正则表达式!首先拆分",然后拆分()每隔一个项目并重新加入它们,它们会处理空白:
stripWS = lambda txt:'"'.join( it if i%2 else ''.join(it.split())
for i,it in enumerate(txt.split('"')) )
Run Code Online (Sandbox Code Playgroud)
用法示例:
>>> stripWS('This is a string with some "text in quotes."')
'Thisisastringwithsome"text in quotes."'
Run Code Online (Sandbox Code Playgroud)
您可以使用shlex.split进行报价分析,并使用“” .join连接结果。例如
print " ".join(shlex.split('Hello "world this is" a test'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2969 次 |
| 最近记录: |