我正在解析此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(" ","")
我不相信我所做的是最狡猾的做法,有更优雅的方式吗?也许是一个正则表达式的单行程序?
答案 0 :(得分:3)
如果你想要一个正则表达式:
point, script = re.search("^(\d+)\s*;\s*(\S+)\s*.*$",s).groups()
其中s
是您的字符串,当然您需要import re
答案 1 :(得分:3)
>>> code, desc = line[:line.rfind('#')].split(';')
>>> code.strip()
'0386'
>>> desc.strip()
'Greek'
答案 2 :(得分:2)
>>> 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'
答案 3 :(得分:0)
我就是这样做的:
>>> s = "0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS"
>>> point = s.split(';')[0].strip()
>>> point
'0386'
>>> script = s.split(';')[1].split('#')[0].strip()
>>> script
'Greek'
请注意,您可以重复使用s.split(';')
。所以将它保存到var
可能是一个好主意:
>>> var = s.split(';')
>>> point = var[0].strip() # Strip gets rid of all the whitespace
>>> point
'0386'
>>> script = var[1].split('#')[0].strip()
>>> script
'Greek'