mystring = '14 | "预处理器帧数不增加;卡:主板,端口:2"|次要'
所以我有3个元素(id,message和level)除以pipe("|").我想得到每个元素,所以我写了这些小函数:
def get_msg(i):
x = i.split("|")
return x[1].strip().replace('"','')
def get_level(i):
x = i.split("|")
return x[2].strip()
#testing
print get_msg(mystring ) # Missing Input PID, PID: 20 : Port 4 of a static component
print get_level(mystring )# major
Run Code Online (Sandbox Code Playgroud)
现在它运作良好,但我觉得这不是解决它的pythonic方式,这两个函数怎么可以改进?正则表达式感觉就像在这里适合,但我很天真,因此无法应用.
我认为最pythonic的方法是使用csv模块.从带有分隔符选项的PyMotW:
import csv
import sys
f = open(sys.argv[1], 'rt')
try:
reader = csv.reader(f, delimiter='|')
for row in reader:
print row
finally:
f.close()
Run Code Online (Sandbox Code Playgroud)