gpt4 book ai didi

Python - 如何通过空格将标点符号与单词分开,在标点符号和单词之间只留下一个空格?

转载 作者:行者123 更新时间:2023-11-28 21:17:19 27 4
gpt4 key购买 nike

我有以下字符串:

input = "I love programming with Python-3.3! Do you? It's great... I give it a 10/10. It's free-to-use, no $$$ involved!"

除“/”、“'”、“-”、“+”和“$”外,所有标点符号都应与单词分开。

所以输出应该是:

"I love programming with Python-3 . 3 ! Do you ? It's great . . . I give it a 10/10. It's free-to-use , no $$$ involved !"

我使用了以下代码:

for x in string.punctuation:
if x == "/":
continue
if x == "'":
continue
if x == "-":
continue
if x == "+":
continue
if x == "$":
continue
input = input.replace(x," %s " % x)

我得到以下输出:

I love programming with Python-3 . 3 !  Do you ?  It's great .  .  .  I give it a 10/10 .  It's free-to-use ,  no $$$ involved ! 

它有效,但问题是它有时会在标点符号和单词之间留下两个空格,例如在句子中的第一个感叹号和单词“Do”之间。这是因为它们之间已经有一个空间。

这个问题也会发生在:input = "Hello. (hi)"。输出将是:

" Hello .  ( hi ) "

注意左括号前的两个空格。

我需要在任何标点符号和单词之间只有一个空格的输出,除了上面提到的 5 个标点符号,它们没有与单词分开。我怎样才能解决这个问题?或者,是否有使用正则表达式执行此操作的更好方法?

提前致谢。

最佳答案

看起来 re 可以为您完成...

>>> import re
>>> re.sub(r"([\w/'+$\s-]+|[^\w/'+$\s-]+)\s*", r"\1 ", input)
"I love programming with Python-3 . 3 ! Do you ? It's great ... I give it a 10/10 . It's free- to-use , no $$$ involved ! "

>>> re.sub(r"([\w/'+$\s-]+|[^\w/'+$\s-]+)\s*", r"\1 ", "Hello. (hi)")
'Hello . ( hi ) '

如果尾随空格有问题,.rtrim(theresult, ' ') 应该会为您修复它:-)

关于Python - 如何通过空格将标点符号与单词分开,在标点符号和单词之间只留下一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810884/

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