解析这个字符串的Pythonic方法?

2024-09-27 21:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析这个line

0386          ; Greek # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS

基本上,我需要-

point = 0386
script = Greek

我就是这样做的

point = line.split(";")[0].replace(" ","")
script = line.split("#")[0].split(";")[1].replace(" ","")

我不相信我所做的是最具Python气概的方法,有没有更优雅的方法呢?也许是正则表达式一行?你知道吗


Tags: 方法alphawithlinescriptreplacepointsplit
3条回答

^{}与未绑定方法^{}一起使用:

>>> line = '0386      ; Greek # L&   GREEK CAPITAL LETTER ALPHA WITH TONOS'
>>> point, script = map(str.strip, line.split('#')[0].split(';'))
>>> point
'0386'
>>> script
'Greek'

使用列表理解:

>>> point, script = [word.strip() for word in line.split('#')[0].split(';')]
>>> point
'0386'
>>> script
'Greek'

如果你想要正则表达式一行:

point, script = re.search("^(\d+)\s*;\s*(\S+)\s*.*$",s).groups()

其中s是您的字符串,当然您需要import re

>>> code, desc = line[:line.rfind('#')].split(';')
>>> code.strip()
'0386'
>>> desc.strip()
'Greek'

相关问题 更多 >

    热门问题