删除文本中的相关连字符

时间:2014-04-09 02:23:58

标签: python python-2.7

假设我的文字看起来像:

a ="我倾向于提出简单的问题"

我想首先提取带连字符的单词,即首先确定文本中是否存在连字符,这很容易。我使用re.match(" \ s * - \ s *",a)来检查句子是否有连字符。

1)接下来我想提取前面和后面的部分单词(在这种情况下,我想提取" inclin"和#34; ed")

2)接下来我想将它们合并到"倾斜"并打印所有这些单词。

我被困在第1步。请帮忙。

2 个答案:

答案 0 :(得分:2)

>>> import re
>>> a = "I am inclin- ed to ask simple questions"
>>> result = re.findall('([a-zA-Z]+-)\s+(\w+)', a)
>>> result
[('inclin-', 'ed')]

>>> [first.rstrip('-') + second for first, second in result]
['inclined']

或者,您可以让第一组保存单词而不使用尾随-

>>> result = re.findall('([a-zA-Z]+)-\s+(\w+)', a)
>>> result
[('inclin', 'ed')]
>>> [''.join(item) for item in result]
['inclined']

这也适用于字符串中的多个匹配项:

>>> a = "I am inclin- ed to ask simp- le quest- ions"
>>> result = re.findall('([a-zA-Z]+)-\s+(\w+)', a)
>>> [''.join(item) for item in result]
['inclined', 'simple', 'questions']

答案 1 :(得分:1)

试试这个正则表达式,它应该适合你:

a = "I am inclin- ed to ask simple questions"

try:
    m = re.search('\S*\-(.|\s)\S*', a) #this will get the whole word, i.e "inclin- ed"
except AttributeError:
    #not found in a

print m

然后你去掉你的字符串,并把它们作为一个数组抓住。