首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除“一个单词”字符串Python的一部分

删除“一个单词”字符串Python的一部分
EN

Stack Overflow用户
提问于 2017-07-01 10:14:56
回答 4查看 214关注 0票数 0

我有一个包含部分语音标记及其细节的列表:['VNW(pers,pron,nomin,red,2v,ev)', 'WW(pv,tgw,met-t)', 'LID(bep,stan,rest)']。正如你所看到的,字符之间没有空格,所以它可以被看作是一个单词。

现在我需要一个只有部分语音标签的新列表,比如这个['VNW', 'WW', 'LID']。我试着用像这个pattern = re.compile(r'(.*)')这样的正则表达式删除括号和它们中的所有东西。

我也试着只匹配大写字母,但我做错了。有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-01 10:16:50

这种情况不需要正则表达式。由(拆分;然后只获得第一部分。

代码语言:javascript
复制
>>> 'VNW(pers,pron,nomin,red,2v,ev)'.split('(')
['VNW', 'pers,pron,nomin,red,2v,ev)']
>>> 'VNW(pers,pron,nomin,red,2v,ev)'.split('(')[0]
'VNW'
代码语言:javascript
复制
>>> xs = ['VNW(pers,pron,nomin,red,2v,ev)', 'WW(pv,tgw,met-t)',
          'LID(bep,stan,rest)']
>>> [x.split('(')[0] for x in xs]
['VNW', 'WW', 'LID']
票数 3
EN

Stack Overflow用户

发布于 2017-07-01 11:06:58

一些可能的解决办法是:

使用循环消除括号

代码语言:javascript
复制
l = ['VNW(pers,pron,nomin,red,2v,ev)', 'WW(pv,tgw,met-t)', 'LID(bep,stan,rest)']
for i in range(len(l)):
    i1,i2=l[i].find('('),l[i].find(')')
    l[i]=l[i][:i1]+l[i][i2+1:]
print l

使用Regex

代码语言:javascript
复制
import re
pattern = r'\([^)]*\)'
l = ['VNW(pers,pron,nomin,red,2v,ev)', 'WW(pv,tgw,met-t)', 'LID(bep,stan,rest)']
for i in range(len(l)):
    l[i] = re.sub(pattern, '', l[i])
print l        

输出: 'VNW','WW','LID‘

票数 1
EN

Stack Overflow用户

发布于 2017-07-01 10:31:26

使用str.find()函数的简短解决方案:

代码语言:javascript
复制
l = ['VNW(pers,pron,nomin,red,2v,ev)', 'WW(pv,tgw,met-t)', 'LID(bep,stan,rest)']
result = [i[:i.find('(')] for i in l]

result内容:

代码语言:javascript
复制
['VNW', 'WW', 'LID']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44859761

复制
相关文章

相似问题

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