首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找任何带有逗号或空格的文本

查找任何带有逗号或空格的文本
EN

Stack Overflow用户
提问于 2012-06-09 17:18:22
回答 3查看 121关注 0票数 0

我有一些短信。你可以在这里看到。

代码语言:javascript
复制
str1 = '{5723647 9 aqua\t \tfem nom/voc pl}{5723647 9 aqua\t \tfem dat sg}{5723647 9 aqua\t \tfem gen sg}'
str2 = '{27224035 2 equo_,equus#1\t \tmasc abl sg}{27224035 2 equo_,equus#1\t \tmasc dat sg}'

我想要的是:

代码语言:javascript
复制
result1 = [('aqua', 'fem nom/voc pl'), ('aqua', 'fem dat sg'), ('aqua', 'fem gen sg')]
result2 = [('equus#1', 'masc abl sg'), ('equus#1', 'masc dat sg')]

正如您在这里看到的,可以有两个变体:

(任意文本,)(字-i-需要)\t \t(form-I-need).

  • (anytext )(字-i-需要)\t \t(form-I-need).

下面是我尝试过的内容:

代码语言:javascript
复制
pattern = re.compile(r'\d* \d*(?:,| )(.*?)\t \t(.*?)}')

我得到的是:

代码语言:javascript
复制
[('aqua', 'fem nom/voc pl'), ('aqua', 'fem dat sg'), ('aqua', 'fem gen sg')]
[('equo_,equus#1', 'masc abl sg'), ('equo_,equus#1', 'masc dat sg')]

然而,第二个问题必须是:

代码语言:javascript
复制
[('equus#1', 'masc abl sg'), ('equus#1', 'masc dat sg')]

你有什么建议吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-09 17:45:25

代码语言:javascript
复制
pattern = re.compile(r"\{(?:.*?,|.*?)(\S+)\t \t(.*?)\}")
票数 3
EN

Stack Overflow用户

发布于 2012-06-09 17:44:44

这将是少数人的观点,但是为什么不使用regex逻辑来处理更容易用regex编写的东西,然后再用Python来处理其他的事情呢?除其他外,它对变化更有活力。有点像

代码语言:javascript
复制
>>> import re
>>> 
>>> str1 = '{5723647 9 aqua\t \tfem nom/voc pl}{5723647 9 aqua\t \tfem dat sg}{5723647 9 aqua\t \tfem gen sg}'
>>> str2 = '{27224035 2 equo_,equus#1\t \tmasc abl sg}{27224035 2 equo_,equus#1\t \tmasc dat sg}'
>>> 
>>> pattern = re.compile("{([^\}]*)}")
>>> 
>>> def extract(part):
...     ps = part.split()
...     word = ps[2].split(',')[-1]
...     form = ' '.join(ps[3:])
...     return word, form
... 
>>> for s in str1, str2:
...     for entry in re.findall(pattern, s):
...         print extract(entry)
... 
('aqua', 'fem nom/voc pl')
('aqua', 'fem dat sg')
('aqua', 'fem gen sg')
('equus#1', 'masc abl sg')
('equus#1', 'masc dat sg')
票数 1
EN

Stack Overflow用户

发布于 2012-06-09 18:27:40

像这样的事情可能会奏效

代码语言:javascript
复制
([^{\s,]*)\t \t([^}]*)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10962983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档