gpt4 book ai didi

python - 如何在Python中按空格分割字符串并将特殊字符视为单独的单词?

转载 作者:行者123 更新时间:2023-11-30 22:55:22 24 4
gpt4 key购买 nike

假设我有一个字符串,

"I want that one, it is great."

我想把这个字符串拆分为

["I", "want", "that", "one", ",", "it", "is", "great", "."]

保留特殊字符,例如 ",.:;" 以及可能的其他字符,将其视为单独的单词。

有没有简单的方法可以使用 Python 2.7 来做到这一点?

更新

例如“I don't.”,它应该是[“I”,“don”,“'”,“t”,“.”] 。理想情况下,它可以与非英语标点符号一起使用,例如 Û 等。

最佳答案

In [70]: re.findall(r"[^,.:;' ]+|[,.:;']", "I want that one, it is great.")
Out[70]: ['I', 'want', 'that', 'one', ',', 'it', 'is', 'great', '.']

In [76]: re.findall(r"[^,.:;' ]+|[,.:;']", "I don't.")
Out[76]: ['I', 'don', "'", 't', '.']

正则表达式[^,.:;' ]+|[,.:;'] 匹配(,, ., : 之外的 1 个或多个字符, ;, ' 或文字空格),或(文字字符 ,, ., :;')。

<小时/>

或者,使用 regex module ,您可以轻松地将其扩展为包括所有 punctuation and symbols通过使用 [:punct:] 字符类:

In [77]: import regex

在Python2中:

In [4]: regex.findall(ur"[^[:punct:] ]+|[[:punct:]]", u"""A \N{ARABIC SEMICOLON} B""")
Out[4]: [u'A', u'\u061b', u'B']

In [6]: regex.findall(ur"[^[:punct:] ]+|[[:punct:]]", u"""He said, "I don't!" """)
Out[6]: [u'He', u'said', u',', u'"', u'I', u'don', u"'", u't', u'!', u'"']

在Python3中:

In [105]: regex.findall(r"[^[:punct:] ]+|[[:punct:]]", """A \N{ARABIC SEMICOLON} B""")
Out[105]: ['A', '؛', 'B']

In [83]: regex.findall(r"[^[:punct:] ]+|[[:punct:]]", """He said, "I don't!" """)
Out[83]: ['He', 'said', ',', '"', 'I', 'don', "'", 't', '!', '"']
<小时/>

请注意,如果您愿意,请将 unicode 作为第二个参数传递给 regex.findall,这一点很重要[:punct:]匹配 unicode 标点符号或符号。

在Python2中:

import regex
print(regex.findall(r"[^[:punct:] ]+|[[:punct:]]", 'help؛'))
print(regex.findall(ur"[^[:punct:] ]+|[[:punct:]]", u'help؛'))

打印

['help\xd8\x9b']
[u'help', u'\u061b']

关于python - 如何在Python中按空格分割字符串并将特殊字符视为单独的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445266/

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