正则表达式 Python - 用单个空格替换换行符、制表符、空格的任意组合[重复]

Posted

技术标签:

【中文标题】正则表达式 Python - 用单个空格替换换行符、制表符、空格的任意组合[重复]【英文标题】:Regex Python - Replace any combination of line breaks, tabs, spaces, by single space [duplicate] 【发布时间】:2019-08-03 01:15:00 【问题描述】:

我正在尝试找到一个常规 exp,它使我能够用单个空格替换所有换行符和制表符(\n、\r、\t 等),以及之前、之后和中间的任何空格.例如,字符串

'版权所有 ©\n\t\t\t\n\t\t\t2019\n\t\t\tApple Inc. All rights 保留。'

应该变成

'版权所有 © 2019 Apple Inc. 保留所有权利。'

另外,如果原始字符串是:

'版权所有 © \n\t \t\t\n \t\t\t2019\n\t\t\t Apple Inc. All rights 保留。'

最终的结果应该是一样的。

对于单个换行符,在没有额外空格的最简单情况下,它会像

re.sub(r"\n", " ", html)

但由于我不经常处理正则表达式,所以我不知道如何解决我想要的问题。

【问题讨论】:

您不需要正则表达式。 ' '.join('Copyright ©\n\t\t\t\n\t\t\t2019\n\t\t\tApple Inc. All rights reserved.'.split()) 会给你你想要的输出。 【参考方案1】:

尝试使用匹配所有空白字符的 \s。

>>> import re
>>> s = 'Copyright ©\n\t\t\t\n\t\t\t2019\n\t\t\tApple Inc. All rights reserved.'
>>> s = re.sub("\s+", " ", s)
>>> s
'Copyright © 2019 Apple Inc. All rights reserved.'

【讨论】:

你甚至可以不用'\s'之后的'+' re.sub("\s", " ", s) 肯定会用空格替换所有制表符/换行符/等。但它会用相同数量的空格替换连续的空白字符。例如,如果您希望 "\t\t\t" 成为单个空格,那么re.sub("\s+", " ", s) 更可取。

以上是关于正则表达式 Python - 用单个空格替换换行符、制表符、空格的任意组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式

正则表达式或用单个空格替换多个空格的方法

js用正则把换行br替换为段落p

正则表达式表示空格或者换行

正则表达式 怎么插入换行

正则表达式怎么解决空格和换行啊??