首页 / PYTHON / python-匹配模式与文本之间
python-匹配模式与文本之间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-匹配模式与文本之间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1856字,纯文字阅读大概需要3分钟。
内容图文
![python-匹配模式与文本之间](/upload/InfoBanner/zyjiaocheng/676/4a8ec4d6989b4780b601501d49f2a09e.jpg)
在定量的经文中(如希腊和拉丁诗歌中所使用的那样),线条被分为脊椎(spondees)和仙人掌(dactyls).上半身像是长元音(如ā),后跟两个短元音,而spondee是两个长元音.
我的目标是在Python中自动将行拆分为脊椎和精齿.
给定一行
ārma virūmqe canō
我正在尝试获取输出
arma vi / rūmque ca / nō
我一直在考虑使用正则表达式查找模式(long,short,short)或(long,long)将是一个好主意,但我似乎无法弄清楚如何处理以下事实:这些元音很少会是连续的,并且它们之间的辅音数量每次都会变化.
有没有办法使用正则表达式查找带有任意数量其他不相关字符的特定字符?如果不是,是否有另一种相对优雅的方法来实现相同的目标?
编辑:
如果需要更多示例,则@Junuxx指出了一个不错的网站. Here’s指向Aeneid的前7行的缩影图片的链接,我从上面得到了示例.每当一个段中只有两个元音时,它就是一块海绵.如果有三个,那就是一个指纹.忽略粗体线,因为它们仅表示一行中的第三部分.
编辑二:
看起来我在示例中打错了字.我写了“ virumqe”,而实际上该行是“ virumque”.在拉丁语中,(ae,au,ei,eu,oe)是双音,并被视为一个元音.那么,我想我必须修正我的问题,以询问是否也可以处理这些问题.
解决方法:
下面的代码适用于您的示例,但是正则表达式相当长,因为没有简明的方式来匹配辅音.
dactyl的正则表达式分类:
[^āēīōūaeiou]* # 0 or more consonants
[āēīōū] # a long vowel
[^āēīōūaeiou]* # 0 or more consonants
[aeiou] # a short vowel
[^āēīōūaeiou]* # 0 or more consonants
[aeiou] # a short vowel
[^āēīōūaeiou]*? # 0 or more consonants, but as few as possible
码:
# -*- coding: utf-8 -*-
import re
s = u"ārma virūmqe canō"
# Long vowels: āēīōū
m = re.findall(u'([^āēīōūaeiou]*[āēīōū][^āēīōūaeiou]*' # Dactyls
u'[aeiou][^āēīōūaeiou]*[aeiou][^āēīōūaeiou]*?'
u'|'
u'[^āēīōūaeiou]*[āēīōū][^āēīōūaeiou]*?' # Spondees
u'[āēīōū]?[^āēīōūaeiou]*'
u'|'
u'[\w\s]*)', s) # Catch all leftovers
try:
print ' / '.join(m)
except:
print 'no match'
输出:
ārma vi / rūmqe ca / nō
内容总结
以上是互联网集市为您收集整理的python-匹配模式与文本之间全部内容,希望文章能够帮你解决python-匹配模式与文本之间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。