替换单个换行符,保留多个[重复]

2023-11-30

我正在解析一个文本文件,并希望删除所有段落内换行符,同时实际上保留形成新段落的双换行符。例如

这是我的第一首诗\n没有意义\n它应该走多远\没有人知道。\n\n这里是一秒钟\n那并不长\再见\n\n

打印出来后,应该如下所示:

This is my first poem
that does not make sense
how far should it go
nobody can know.

Here is a seconds
that is not as long
goodbye

应该成为

这是我的第一首诗,它没有意义,它应该走多远,没有人知道。\n\n这是一个不那么长的再见\n\n

同样,打印时,它应该看起来像:

This is my first poem that does not make sense how far should it go nobody can know.

Here is a seconds that is not as long goodbye

这里的技巧是删除单个出现的 '\n',同时保留双换行符 '\n\n',并保留空白(即“hello\nworld”变为“hello world”而不是“helloworld”) 。

我可以通过首先用虚拟字符串替换 \n\n 来做到这一点(例如“$$$”,或者同样荒谬的东西),然后删除 \n,然后重新转换“$$$" 回到 \n\n...但这似乎过于迂回。我可以通过单个正则表达式调用来进行此转换吗?


您可以用空格替换所有未用其他换行符括起来的换行符:

re.sub(r"(?<!\n)\n(?!\n)", " ", s)

See the Python演示:

import re
s = "This is my first poem\nthat does not make sense\nhow far should it go\nnobody can know.\n\nHere is a seconds\nthat is not as long\ngoodbye\n\n"
res = re.sub(r"(?<!\n)\n(?!\n)", " ", s)
print(res)

在这里,(?<!\n) is a 消极回顾如果换行符与另一个换行符一起退出,则匹配失败,并且(?!\n) is a 负前瞻fils 换行符的匹配后面跟着另一个换行符。

查看更多关于前向和后向零长度断言 here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换单个换行符,保留多个[重复] 的相关文章

随机推荐

  • 如何设置EditText中的光标位置?

    那里有两个EditText 加载页面时 第一个 EditText 中设置了一个文本 所以现在光标将位于EditText 我想要在第二个 EditText 中设置光标位置其中不包含任何数据 这个怎么做 其中position是一个int edi
  • 在 UIPresentationController 中对呈现视图进行动画处理

    对于某些上下文 我建议阅读以下内容 非常相关的问题 使用 UIViewControllerContextTransitioning 从视图控制器 消失非常相关的答案 https stackoverflow com a 25901154 75
  • $id 令牌是 JSON 标准吗?

    使用 Microsoft WebApi 2 使用第三方 Json NET 库 假设我返回以下内容people array var p1 new Person Alice var p2 new Person Bob p1 Sibling p2
  • Android 上如何区分语音通话和视频通话?

    我想记录语音通话和视频通话 我必须区分它们 视频通话的 ACTION NEW OUTGOING CALL 的意图和语音通话的 ACTION NEW OUTGOING CALL 的意图有什么区别 没有什么区别 因为在撰写本文时 Android
  • 如何在 Swift 中自动移动到下一个 UITextField

    我有 2 个带有 NumberPad 键盘类型的文本字段 IBOutlet weak var ourTextField UITextField IBOutlet weak var forThemTextField UITextField 我
  • 如何制作像 Google Play 一样的 ActionBar 在滚动时淡入

    如何制作像Google Play一样透明或半透明的ActionBar 在滚动时淡入或淡出windowActionBarOverlay 检查以下屏幕截图 以下是我在我正在工作的应用程序中使用的代码 您必须使用OnScrollChanged功能
  • getContentResolver().openOutputStream(uri) 提供商不支持文件

    我想在我的个人内容提供商中存储文件音频 我保存记录 Uri uri getContentResolver insert CONTENT URI 值 OutputStream os getContentResolver openOutputS
  • 文件名不能为空

    每次点击提交按钮时都会出现此错误 其他所有内容都会提交到数据库 只有图像不会 警告 file get contents 文件名不能为空 任何想法 这是我的代码 if isset POST consultationbutton image a
  • 为什么 scipy.optimize.curve_fit 无法正确拟合数据?

    一段时间以来我一直在尝试使用函数来拟合某些数据scipy optimize curve fit但我确实有困难 我真的看不出这行不通的任何原因 encoding utf 8 from future import print function
  • Javascript 计算字符串中字母的频率

    我一直在尝试找出这个练习的答案 但一定有一个我看不到的错误 我将分享练习的描述 我的代码以及最后的输出 描述 现在我们将把每个数组的最长长度保存在一个名为 array lengths 的新数组中 打开控制台并重新加载索引页以查看代码的结果
  • 在 Hyperledger Composer 交易中以确定性方式获取时间戳

    是否有一种确定性的方法可以在事务函数中获取时间戳 类似于可以在 Go 版本的 Fabric 链码中使用的 stub GetTxTimestamp 只是分享一个适用于的示例basic sample network网络 在模型文件中 lib o
  • 负面展望未按预期发挥作用

    我有一个奇怪的情况积极的前瞻按预期工作 但是负前瞻没有 请看一下下面的代码
  • 如何创建 3 路 ManyToMany 关系 django

    需要在 django admin 中对服务器 应用程序和服务器角色之间的关系进行建模 服务器可以有one or 许多应用 应用程序可以托管在one or many服务器 A Server has one or many roles for
  • 为什么在 TypeScript 中,接口中可能的数值可以转换为类实现中不可能的数值?

    今天我遇到了一个意想不到的 TypeScript 编译器行为 我想知道这是一个错误还是一个功能 可能这将是最后一个 但我想知道其背后的理由 如果我声明一个接口方法 其参数可以是string number 并创建一个实现该接口的类 那么该类方
  • 从 firebase 获取特定类别的数据

    我想对 Firebase 实时数据库中的数据进行分类 然后按类别选择它们以显示在我的 android 视图的不同部分中 但我不知道从哪里开始 我是 Firebase 的新手 我所知道的就是如何提取数据 推送到 Firebase 数据库并显示
  • 告诉转义的十六进制在字符串中结束的位置[重复]

    这个问题在这里已经有答案了 我想打印 10 Celsiusprintffunction 通常我会这样做 printf 10 xF8Celsius 其中 xF8 是度数符号的 ANSI 代码 问题是编译器获取 x 之后的所有十六进制字符并尝试
  • Android Studio:新项目与新模块

    Android Studio 使用的概念modules 而其他 IDE 例如 Eclipse 则使用projects 然而ASFile菜单可以选择创建一个New Module以及ASAnew Project 如果有的话 这两者之间有什么区别
  • 在 Big Sur 上使用 perlbrew 安装 perl 时出错

    我正在尝试使用 perlbrew 在 macOS 环境中安装 perl 版本 5 33 4 我无法理解为什么它在安装过程中失败 我开始使用安装 perlbrew curl L https install perlbrew pl bash 然
  • MVC4 中表的 Foreach 循环

    我正在使用 C 在 MVC4 中完成我的项目 我的模型中有一个 IEnumerable 列表 我使用以下循环来列出我的观点 table tbody foreach var item in Model tr td Rtn item Mem N
  • 替换单个换行符,保留多个[重复]

    这个问题在这里已经有答案了 我正在解析一个文本文件 并希望删除所有段落内换行符 同时实际上保留形成新段落的双换行符 例如 这是我的第一首诗 n没有意义 n它应该走多远 没有人知道 n n这里是一秒钟 n那并不长 再见 n n 打印出来后 应