代码改变世界

python3 - 对有规律的字符串进行切割(split用法)

2017-02-08 15:26  菜鸟Alex  阅读(29326)  评论(0编辑  收藏  举报

str = 'title={WiMAX Power Amplifier Design based on Si-LDMOS},author={Nader, Charles and De Carvalho, Nuno Borges},journal={University of Galve, Sweden},year={2006}'

# 方法1:先通过分隔符 '},' 来分隔字符串,在判断 'author' 并输出 author对应的内容
for item in str.split('},'):
    try:
        if 'author' in item:
            print(item.split('{', 1)[1])
    except Exception as e:
        print(e)


# 方法2:
d = dict([s.split('={') for s in str.split('},')])
print(d['author'])

  • 原理: 代码先执行 for 语句中的 str.split('},') 每次循环得到一个由 '},' 分隔的字符串,然后通过 s.split('={') 分隔出等号前后的内容,split函数返回的是一个数组则经过四次循环得到的内容如下

['title', 'WiMAX Power Amplifier Design based on Si-LDMOS']
['author', 'Nader, Charles and De Carvalho, Nuno Borges']
['journal', 'University of Galve, Sweden']
['year', '2006}']


d = dict([s.split('={') for s in str.split('},')])
# 再通过key取出value即可
print(d['author'])


注释


d = dict([s.split('={') for s in str.split('},')])
# 以上代码可以转化为下面这样看起来清楚了许多,
one = str.split('},')
for s in one:
    two = s.split('={')
    print(two)

  • 列表转字典

  • 还有一种方法:正则表达式,不太会...


补充官方文档注释:

  • 大概意思:括号第一个参数: 用户规定的分隔符,第二个参数: 分隔长度. 返回的是一个list列表.如果第一个参数没有的话那么任何一个例如 空格、换行(\n)、制表符(\t)就作为一个分隔符来分隔字符串,并以列表list的形式返回给调用者.