正则表达式 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 - 用单个空格替换换行符、制表符、空格的任意组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章