解析字典列表以提取值时“ if”语句的语法

时间:2019-05-02 22:36:41

标签: python json python-2.7

我正在解析通过网络爬网生成的json文件,并且仅需要提取西班牙语文本;文本使用英语和西班牙语。 json是词典列表。我需要从键“ humanLanguage”中提取值为“ es”的值。

目前,我提取所有文本的代码是:

    url = urllib2.urlopen('https://website_data.json')
    obj = json.load(url)
    text = [li['text'] for li in obj]

由于'humanLanguage'是与'text'级别相同的键,因此我尝试将其作为隔离值的第一步:

    for value1 in obj[0]['humanLanguage']:
        print value1

,但这会垂直打印出“ en”。至少我知道这是一种找到标签并识别英语或西班牙语的方法,但是我不知道为什么它是垂直打印的,也不知道如何解决。

我想做的是有一个“ if”语句,说如果'humanLanguage'=='es',则打印文本。但是我一直没有找到正确的表达方式。

我在这里正确吗? “ if”语句是实现此目标的方法吗?如果是,我应该构造什么表达式?还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

我假设您的数据如下所示:

{
  {"humanLanguage": "en", "text": "Some english text 1"},
  {"humanLanguage": "es", "text": "Some spanish text 1"},
  {"humanLanguage": "en", "text": "Some english text 2"},
  {"humanLanguage": "es", "text": "Some spanish text 2"},
  ... etc ...
}

如果要获取所有text字段的列表,但仅当相应的humanLanguage字段== {es时,请尝试以下方法:

text = [li['text'] for li in obj if li['humanLanguage'] == 'es']

然后您可以将它们全部打印出来:

for t in text:
    print(t)