gpt4 book ai didi

python - 在 Python 中分割除特定情况之外的所有内容

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:16 26 4
gpt4 key购买 nike

我不太擅长正则表达式,每次它出现时它都会让我感到困惑,所以我不想编写可能不正确的正则表达式字符串,而是想以不同的方式拆分字符串。

假设我有一个字符串“你好,我的名字是约瑟夫!哈哈,你好!”每当遇到非字母数字字符时我想将其拆分。那么,在这种情况下,我会得到:

“你好”“我的”“姓名”"is"“约瑟夫”“哈哈”“你好”

有没有办法在没有正则表达式字符串的情况下做到这一点?如:每当字符!=字母数字时就分割?

(是的,我确实意识到不纠正我的正则表达式缺陷可能不是明智之举!)

最佳答案

就我个人而言,我认为使用简单直接的正则表达式来完成此类简单的任务是合适的。

比较itertoolsre解决方案:

import itertools, re
s = "hello, my name is Joseph! Haha, hello!"
print(["".join(x) for _, x in itertools.groupby(s, key=str.isalnum)][0::2])
print(re.findall(r"\w+", s))

查看online Python demo here .

对于我来说,我会在这里投票支持正则表达式。 \w+ 匹配一个或多个单词字符(字母、数字、下划线),re.findall 返回所有不重叠的匹配项。

itertools groupby 根据设置为字母数字 (str.alnum) 的 key 和所有偶数标记对子字符串 block 进行分组(本例中的非单词 block )通过 [0::2] 从最终结果中删除。如果字符串以非单词字符开头,则这不起作用,正则表达式解决方案更安全、更简单。

关于python - 在 Python 中分割除特定情况之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498354/

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