我想分析.jsonl文档中的文本(使用Python 3)。只要文本是英文的,我正在运行的代码工作正常,但对于阿拉伯文本文件,我收到错误消息: json.decoder.JSONDecodeError:意外的UTF-8 BOM(使用utf-8-sig解码):第1行第1列(char 0)
我通读了一些线程并认为我可能需要解码它,我将.decode(utf-8-sig)添加到json.loads(参见代码)。这样做,导致以下错误消息: AttributeError:'str'对象没有属性'decode'
我还在〜/ .bashrc中将LANG设置更改为utf8,以防它与bash终端无法正确显示字符但错误相同。
这里的代码和提前感谢!
import sys
from collections import Counter
import json
def get_hashtags(tweet):
entities = tweet.get('entities', {})
hashtags = entities.get('hashtags', [])
return [tag['text'].lower() for tag in hashtags]
if __name__ == '__main__':
fname = sys.argv[1]
with open(fname, 'r') as f:
hashtags = Counter()
for line in f:
tweet = json.loads(line.decode('utf-8-sig'))
hashtags_in_tweet = get_hashtags(tweet)
hashtags.update(hashtags_in_tweet)
for tag, count in hashtags.most_common(20):
print("{}: {}".format(tag, count))
答案 0 :(得分:2)
你可以在Python 2和Python 3中使用支持on fly(通过encoding
参数)解码的io.open
(实际上,在Python 3中,io.open
是默认的{{ 1}}):
open