我正在解析通过网络爬网生成的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”语句是实现此目标的方法吗?如果是,我应该构造什么表达式?还是有更好的方法?
答案 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)