python - 将字符串拆分为字母和标点符号,但正则表达式除外
问题描述
我正在尝试将字符串分成两部分:字母字符和特殊字符。我想限制转义字符的出现
b.sc.... = ['b.sc.','...'] (只保留“。”内部单词和外部单词一次)
真的????= ['really','????'] (遇到任何其他特殊字符时拆分)
在发布到这里之前,我经历了很多 SO 问题。到目前为止,我已经想出了这个:re.findall(r"[\w+|\-.+\w]+|\W+
,文本)`如何进一步进行?
解决方案
您可以使用
[re.sub(r'([.-])+', r'\1', x) for x in re.findall(r'\w+(?:-+\w+)+|\w+(?:\.+\w+)*\.?|[^\w\s]+', text)]
细节
\w+(?:-+\w+)+
- 一个或多个单词字符后跟一个或多个出现的-
和一个或多个单词字符|
- 或者\w+(?:\.+\w+)*\.?
- 一个或多个单词字符后跟一个或多个出现的.
和一个或多个单词字符,然后是一个可选的点|
- 或者[^\w\s]+
- 一个或多个非单词和非空白字符。
该re.sub(r'([.-])+', r'\1', x)
部分是一个后处理步骤,用于将一个或多个连续字符.
或-
字符替换为一次出现。
推荐阅读
- sql - 在 Microsoft SQL 中,如何每个 ID 仅返回 1 行,多列结果
- jquery - 在保持键盘的同时专注于下一个输入
- vb.net - 如何获取 TraceSource 列表或按名称检索 TraceSource?
- nuget-package - 如何在 csproj 中指定提交和分支以创建 nuget 包
- php - 发布 Dialogflow 代理不会更新 API 答案
- kotlin - KOTLIN 中的 AT 符号是什么意思
- python - 是否可以在不定义类的情况下编写一个以“self”为参数的函数?
- html - 当焦点轮廓被图形元素遮挡时,如何使焦点轮廓可见?
- php - strrpos 耗尽了允许的内存大小
- google-calendar-api - 查找辅助日历