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的形式返回给调用者.