删除引号之间不需要的空格

Remove unwanted spaces between quotations

有没有更优雅的方法来删除引号之间的空格(尽管使用这样的代码:

input = input.replace('" 12 "', '"12"')`)

来自这样的句子:

 At " 12 " hours " 35 " minutes my friend called me.

问题是数字可能会改变,然后代码将无法正常工作。 :)

你可以使用正则表达式,只要你的引语是合理的:

re.sub(r'"\s*([^"]*?)\s*"', r'""', input)

模式读作“引号、任意数量的空格、不是引号的内容(捕获),后跟任意数量的空格和引号。替换就是您在引号中捕获的内容。

注意捕获组中的量词是勉强的。这样可以确保您不会捕获尾随空格。

您可以尝试使用正则表达式,如下所示:

"\s+(.*?)\s+"

这匹配任何长度的任何子字符串,包含任何不是换行符的字符,由空格和引号包围。通过将其传递给 re.compile(),您可以使用返回的 Pattern 对象来调用 sub() 方法。

>>> import re
>>> string = 'At " 12 " hours " 35 " minutes my friend called me.'
>>> regex = re.compile(r'"\s+(.*?)\s+"')
>>> regex.sub(r'""', string)
'At "12" hours "35" minutes my friend called me.'

</code> 要求替换第一组,在本例中是 <code>.*?

匹配的字符串

这是我快速想出的解决方案,适用于您输入的任何数字。

input = 'At " 12 " hours " 35 " minutes my friend called me.'

input = input.split()

for count, word in enumerate(input):
    if input[count] == '"':
        del input[count]
    if input[count].isdigit():
        input[count] = '"' + input[count] + '"'

str1 = ' '.join(input)
print('Output:')
print(str1)

输出:

>>> Output:
>>> At "12" hours "35" minutes my friend called me.