【问题标题】:python : json.loads()[str] returns a stringpython : json.loads()[str] 返回一个字符串
【发布时间】:2017-11-28 15:49:20
【问题描述】:

我正在尝试使用正则表达式标记推文。这里 tokens_re 和 emoticon_re 是 2 个正则表达式对象

def tokenize(s):
    return tokens_re.findall(s)

def preprocess(s, lowercase=False):
    tokens = tokenize(s)
    if lowercase:
        tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens]
    return tokens

with open('twitterdata.json', 'r') as f:
    for line in f:
        tweet = json.loads(line)
        tokens = preprocess(tweet['text'])

s 在这里必须是字符串,但是tweet['text'] 怎么是字符串呢?

【问题讨论】:

  • 为什么不是字符串?
  • json.loads() 不返回字符串我不知道语法到底是什么`['text]' 做什么?
  • 它是一个索引操作符。
  • 所以它返回对应于json.loads()返回的dict中的键text
  • @kartikeykant18 是的。这就是字典的工作原理。

标签: python json string twitter


【解决方案1】:

我认为您实际上并没有正确使用此处的索引。如果您可以提供 JSON 数据的样本,可能会更好。 不管怎样,你可以试试这个。

tokens = preprocess(tweet[0]['text'])

这里 0 是第一个索引。 你可以把它放在一个循环中。

希望对你有帮助。

【讨论】:

  • 是什么让你认为tweet 是一个列表?
  • 我得到输出:""" { "hashtags":[ { "text":"snow", "indices":[ 66, 71 ] }, { "text":"skiing ", "indices":[ 73, 80 ] } ] }""" import json str = "" with open ('data.json', 'r') as f: for line in f: str+= line tweet = json .loads(str) print tweet['hashtags'][0]['text'] 如果我错了请告诉我
猜你喜欢
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2016-04-07
  • 2021-10-21
  • 2013-12-21
  • 1970-01-01
  • 2014-05-01
相关资源
最近更新 更多