更好的方法来进行字符串过滤/操作

Hel*_*nar 0 python string

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方式,这两个函数怎么可以改进?正则表达式感觉就像在这里适合,但我很天真,因此无法应用.

olt*_*olt 5

我认为最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)