Python正则表达式将所有换行符直接替换为后跟带有ch的字符

2024-03-28 19:13:57 发布

您现在位置:Python中文网/ 问答频道 /正文

字符串示例:

str = "test sdf sfwe \n \na dssdf 

我要替换:

\na

a

其中“a”可以是任何字符。你知道吗

我试过:

str = "test \n \na"
res = re.sub('[\n.]','a',str)

但是如何将字符存储在\n后面并将其用作替换?你知道吗


Tags: 字符串testre示例res字符nasdf
3条回答

我认为,最好的方法是,你不必在你的文本中有更多的空间如下:

string = "test sdf sfwe \n \na dssdf"

import re
' '.join(re.findall('\w+',string))

'test sdf sfwe a dssdf'

您可以将此正则表达式与捕获组一起使用:

>>> s = "test sdf sfwe \n \na dssdf"
>>> >>> print re.sub(r'\n(.)', r'\1', s)
test sdf sfwe  a dssdf
  • 搜索正则表达式r'\n(.)'将匹配\n后跟任何字符,并捕获组#1中的下列字符

  • Replacementr'\1'是对捕获组#1的反向引用,捕获组#1放回原始字符串中。

  • 最好避免将str作为变量名,因为它在python中是保留关键字(函数)。

如果所说的任何字符指的是任何非空格字符,则将此正则表达式与\S(非空格字符)一起使用,而不是.

>>> print re.sub(r'\n(\S)', r'\1', s)
test sdf sfwe
 a dssdf

此外,这种基于前瞻性的方法也适用于不需要任何捕获组的情况:

>>> print re.sub(r'\n(?=\S)', '', s)
test sdf sfwe
 a dssdf

请注意,[\n.]将匹配\n或文字点中的任何一个,而不是\n后跟任何字符

查找所有匹配项:

matches = re.findall( r'\n\w', str )

全部更换:

for m in matches :
    str = str.replace( m, m[1] )

就这些,伙计们!=)

相关问题 更多 >