替换由新行创建的句子中的带连字符的单词

时间:2016-10-23 19:10:50

标签: python regex

reso- lution
sug- gest
evolu- tion

是由于一段文本中的行空间有限而包含连字符的所有单词。例如

  

分析两个高分辨率核小体图显示强烈   即使它们不构成明确证据,也表示信号   至少与这样的观点一致。综合起来,所有这些   研究结果建议核小体的有趣可能性   位置是DNA机械进化的产物   分子。

我想用它们的自然形式取代,即

resolution
suggest
evolution

如何在python文本中执行此操作?

2 个答案:

答案 0 :(得分:1)

确保在-之前有一个小写字母,在- +空格之后有一个小写字母,捕获字母并使用反向引用以在替换后取回这些字母:

([a-z])- ([a-z])

请参阅regex demo(替换为\1\2反向引用序列)。请注意,您可以使用{1,max}量词来调整空格数(例如,如果单词的各个部分之间有一个或两个空格,请使用([a-z])- {1,2}([a-z]))。如果可以有任何空格,请使用\s而不是

Python code

import re
s = 'Analysis of two high reso- lution nucleosome maps revealed strong signals that even though they do not constitute a definite proof are at least consistent with such a view. Taken together, all these findings sug- gest the intriguing possibility that nucleosome positions are the product of a mechanical evolu- tion of DNA molecules.'
s = re.sub(r'([a-z])- ([a-z])', r'\1\2', s)
print(s)

答案 1 :(得分:0)

使用str.replace()"- "替换为""。例如:

>>> my_text = 'reso- lution'
>>> my_text = my_text.replace('- ', '')
>>> my_text  # Updated value without "- "
'resolution'