首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python将换行符(\n)替换为其他

python将换行符(\n)替换为其他
EN

Stack Overflow用户
提问于 2016-03-18 18:19:41
回答 3查看 12.2K关注 0票数 2

我试图将多个连续的换行符和大写字母转换成"____“,这样我就可以解析它们了。

例如,

代码语言:javascript
复制
i = "Inc\n\nContact"
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i) 

In [25]: i
Out [25]: 'Inc____Contact'

这条绳子很好用。稍后我可以使用____解析它们。

但是,它不适用于这个特定的字符串。

代码语言:javascript
复制
i =  "(2 months)\n\nML"
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i)

Out [31]: '(2 months)____L'

它吃了大本营M.我在这里错过了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-18 18:33:14

编辑以将多个连续换行符(\n)替换为____,应该这样做:

代码语言:javascript
复制
>>> import re
>>> i =  "(2 months)\n\nML"
>>> re.sub(r'(\n+)(?=[A-Z])', r'____', i)
'(2 months)____ML'

(?=[A-Z])用于断言“换行符后面跟着大写字母”。REGEX演示

票数 5
EN

Stack Overflow用户

发布于 2016-03-18 18:40:10

让我们看一看正则表达式([\n]+)([A-Z])+ --第一部分([\n]+)很好,将换行符的多次出现匹配为一个组(注意--这与回车返回\r不匹配)。但是,第二部分([A-Z])+会将单个大写字母匹配到捕获组中--如果有多个大写字母,则会将组重置为最后匹配的大写字母,然后将其用于替换。

试试下面的内容,看看会发生什么

代码语言:javascript
复制
import re    
i = "Inc\n\nABRAXAS"
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i)

您可以简单地将+放在捕获组中,这样就可以在其中匹配多个大写字母。你也可以忽略它,因为它并没有什么区别,这些大写字母后面有多少个。

代码语言:javascript
复制
import re    
i = "Inc\n\nABRAXAS"
i = re.sub(r'(\n+)([A-Z])', r"____\2", i)

如果您想替换任何换行符序列,无论后面是什么-完全删除([A-Z])并尝试

代码语言:javascript
复制
import re
i = "Inc\n\nABRAXAS"
i = re.sub(r'(\n+)', r"____", i)

如果您想考虑回车,也可以使用([\r\n]+)作为模式。

票数 1
EN

Stack Overflow用户

发布于 2016-03-18 18:26:33

尝试:

代码语言:javascript
复制
import re
p = re.compile(ur'[\r?\n]')
test_str = u"(2 months)\n\nML"
subst = u"_"

result = re.sub(p, subst, test_str)

它将将字符串缩减为

代码语言:javascript
复制
(2 months)__ML

请参阅演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36091633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档