gpt4 book ai didi

python - re.sub 在标点符号和以标点符号开头或结尾的单词之间放置空格

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:33 24 4
gpt4 key购买 nike

我试图在标点符号和以标点符号开头或结尾的单词之间放置一个空格,而不是在标点符号之间的地方。根据我的发现,我能想到的最接近的是:

print(re.sub(r'([.,!?()\-])([^\s]+)', r'\g<1> \g<2>', '!hello 77e!  -  -world-view- world-view'))
print(re.sub(r'([^\s]+)([.,!?()\-])', r'\g<1> \g<2>', '!hello 77e! - -world-view- world-view'))

我得到的输出是:

! hello 77e!  -  - world-view- world- view
!hello 77e ! - -world-view - world -view

这很接近,但我想要:

! hello 77e!  -  - world-view- world-view
!hello 77e ! - -world-view - world-view

在期望的输出中,“world-view”保持为“world-view”

我计划在字符串上使用两行代码,所以到最后我会得到如下内容:

! hello 77e !  -  - world-view - world-view

如果有一种方法可以在一行中执行此操作,那就太好了,但如果没有,那么有人可以告诉我如何针对这两行进行调整吗?

最佳答案

你可以把它改成

import re
print(re.sub(r'(\w) - (\w)', r'\g<1>-\g<2>',
re.sub(r'([!?.-])', r' \g<1> ', '!hello 77e! - -world-view- world-view')) )

输出:

! hello 77e !    -    - world-view -  world-view

它本质上是在任何 !?.- 周围放置空格,然后再次将它们从 \w -\w 中删除。

您在现有 ' - ' 周围得到了一些额外的空间,不确定这是否会破坏交易。


@WiktorStribizew 的解决方案更好,我建议改用他的 - 它完全符合您的要求 - 据我在他的 regex101-link 中所见。

关于python - re.sub 在标点符号和以标点符号开头或结尾的单词之间放置空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53507270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com