0

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

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

    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' 语句是实现这一目标的方法吗?如果是,我应该构造什么表达式?或者,还有更好的方法?

4

1 回答 1

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)
于 2019-05-02T22:43:13.060 回答