我有这样一根弦:
s = 'Hello \nWorld!\nToday is a wonderful day'
我需要这个:
'Hello \nWorld!\nToday is a wonderful day'
我尝试使用split
和join
如下:
' '.join('Hello \nWorld!\nToday is a wonderful day'.split())
但我得到了这个
'Hello World!Today is a wonderful day'
正则表达式:
re.sub(r"\s+", " ", 'Hello \nWorld!\nToday is a wonderful day')
都得到了同样的结果
3条答案
按热度按时间jexiocij1#
你可以做几件事。
您可以简单地将至少一个空格的任何出现替换为单个空格:
要涵盖更多类型的(水平)空白,您可以包括制表符(
\t
)和提要(\f
)字符(请参见regex101):或者,你可以不指定你想替换的字符,而是排除那些你不想替换的字符(双重否定!):
在最后一个例子中,
^
表示列表中任何不存在的字符都应该被匹配,\S
表示所有不存在的空格字符,\n
和\r
是换行符和回车符。参见regex101。oo7oh9g92#
使用
str
的方法,您可能会得到如下所需的输出:给予
说明:在空格处拆分字符,然后使用解析过滤掉空字符串(它们确实来自相邻空格),然后连接剩下内容
xoefb8l83#
这里有两种方法来做到这一点的两种解释的问题。
第一次解释:如果一行中有两个或多个相同的空格字符,除了换行符(
\n
),请删除所有这些字符,只保留一个。替换正则表达式的每个匹配项
一个空字符串。
Demo
此正则表达式具有以下元素。
或者,将
捕获组1的内容。
Demo
此正则表达式具有以下元素。
第二种解释:如果一行中有两个或多个空格字符,除了换行符(
\s
),删除除最后一个空格字符以外的所有空格字符。替换正则表达式的每个匹配项
一个空字符串。
Demo
此正则表达式具有以下元素。
或者,将
Demo
这个正则表达式的内容是,“匹配除换行符(
\n
)以外的空白字符两次或更多次,尽可能多。