Python:使用 f 字符串隐藏 json 空键值
Python: Hiding json empty key values with f-string
我改进了 使用 f 字符串而不是打印:
....
js = json.loads(data)
# here is an excerpt of my code:
def publi(type):
if type == 'ART':
return f"{nom} ({dat}). {tit}. {jou}. Pubmed: {pbm}"
print("Journal articles:")
for art in js['response']['docs']:
stuff = art['docType_s']
if not stuff == 'ART': continue
tit = art['title_s'][0]
nom = art['authFullName_s'][0]
jou = art['journalTitle_s']
dat = art['producedDateY_i']
try:
pbm = art['pubmedId_s']
except (KeyError, NameError):
pbm = ""
print(publi('ART'))
此程序通过 json 文件获取数据以构建科学引文:
# sample output: J A. Anderson (2018). Looking at the DNA structure, Nature. PubMed: 3256988
它运行良好,除了(再次)当键没有值时我不知道如何从 return 语句中隐藏键值(即 [=43 中没有这样的键) =] 一个特定引用的文件)。
例如,一些科学引文没有"Pubmed" key/value (pmd)。我不想用空白值打印 "Pubmed: ",而是想摆脱它们:
# Desired output (when pbm key is missing from the JSON file):
# J A. Anderson (2018) Looking at the DNA structure, Nature
# NOT: J A. Anderson (2018) Looking at the DNA structure, Nature. Pubmed:
在 publi 函数中使用 print 语句,我可以编写以下内容:
# Pubmed: ' if len(pbm)!=0 else "", pbm if len(pbm)!=0 else ""
有谁知道如何使用 f-string 得到相同的结果?
感谢您的帮助。
PS:作为一个 python 初学者,我无法仅仅阅读 post
来解决这个具体问题
一个简单但有点麻烦的解决方法是在字符串中添加格式装饰。
try:
pbm = ". Pubmed: " + art['pubmedId_s']
except (KeyError, NameError):
pbm = ""
...
print(f"{nom} ({dat}). {tit}. {jou}{pbm}")
您也可以在 f 字符串中使用条件表达式:
return f"{nom} {'(%s)' % dat if dat else ''}. {tit}. {jou}. {'Pubmed: ' + pbm if pbm else ''}"
或者您可以简单地使用 and
运算符:
return f"{nom} {dat and '(%s)' % dat}. {tit}. {jou}. {pbm and 'Pubmed: ' + pbm}"
我改进了
....
js = json.loads(data)
# here is an excerpt of my code:
def publi(type):
if type == 'ART':
return f"{nom} ({dat}). {tit}. {jou}. Pubmed: {pbm}"
print("Journal articles:")
for art in js['response']['docs']:
stuff = art['docType_s']
if not stuff == 'ART': continue
tit = art['title_s'][0]
nom = art['authFullName_s'][0]
jou = art['journalTitle_s']
dat = art['producedDateY_i']
try:
pbm = art['pubmedId_s']
except (KeyError, NameError):
pbm = ""
print(publi('ART'))
此程序通过 json 文件获取数据以构建科学引文:
# sample output: J A. Anderson (2018). Looking at the DNA structure, Nature. PubMed: 3256988
它运行良好,除了(再次)当键没有值时我不知道如何从 return 语句中隐藏键值(即 [=43 中没有这样的键) =] 一个特定引用的文件)。
例如,一些科学引文没有"Pubmed" key/value (pmd)。我不想用空白值打印 "Pubmed: ",而是想摆脱它们:
# Desired output (when pbm key is missing from the JSON file):
# J A. Anderson (2018) Looking at the DNA structure, Nature
# NOT: J A. Anderson (2018) Looking at the DNA structure, Nature. Pubmed:
在 publi 函数中使用 print 语句,我可以编写以下内容:
# Pubmed: ' if len(pbm)!=0 else "", pbm if len(pbm)!=0 else ""
有谁知道如何使用 f-string 得到相同的结果?
感谢您的帮助。
PS:作为一个 python 初学者,我无法仅仅阅读 post
一个简单但有点麻烦的解决方法是在字符串中添加格式装饰。
try:
pbm = ". Pubmed: " + art['pubmedId_s']
except (KeyError, NameError):
pbm = ""
...
print(f"{nom} ({dat}). {tit}. {jou}{pbm}")
您也可以在 f 字符串中使用条件表达式:
return f"{nom} {'(%s)' % dat if dat else ''}. {tit}. {jou}. {'Pubmed: ' + pbm if pbm else ''}"
或者您可以简单地使用 and
运算符:
return f"{nom} {dat and '(%s)' % dat}. {tit}. {jou}. {pbm and 'Pubmed: ' + pbm}"