Как записать араби c в файл CSV - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь извлечь твиты с помощью Python и сохранить их в файле CSV, но, похоже, я не могу включить все языки. Араби c отображается как специальные символы.

def recup_all_tweets(screen_name,api):
    all_tweets = []
    new_tweets = api.user_timeline(screen_name,count=300)
    all_tweets.extend(new_tweets)
    #outtweets = [[tweet.id_str, tweet.created_at, tweet.text,tweet.retweet_count,get_hashtagslist(tweet.text)] for tweet in all_tweets]
    outtweets = [[tweet.text,tweet.entities['hashtags']] for tweet in all_tweets]
  #  with open('recup_all_tweets.json', 'w', encoding='utf-8') as f:
   #     f.write(json.dumps(outtweets, indent=4, sort_keys=True))

    with open('recup_all_tweets.csv', 'w',encoding='utf-8') as f:
       writer = csv.writer(f,delimiter=',')
       writer.writerow(["text","tag"])
       writer.writerows(outtweets)
   # pass

    return(outtweets)

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Пример записи как CSV, так и JSON:

#coding:utf8
import csv
import json

s = ['عربى','عربى','عربى']

with open('output.csv','w',encoding='utf-8-sig',newline='') as f:
    r = csv.writer(f)
    r.writerow(['header1','header2','header3'])
    r.writerow(s)

with open('output.json','w',encoding='utf8') as f:
    json.dump(s,f,ensure_ascii=False)

output.csv:

header1,header2,header3
عربى,عربى,عربى

output.csv при просмотре в Excel:

введите описание изображения здесь

вывод. json:

["عربى", "عربى", "عربى"]

Примечание. Microsoft Excel требуется utf-8-sig для правильного чтения файла UTF-8. Другим приложениям он может потребоваться, а может и не потребоваться для правильного просмотра. Многие приложения Windows требовали подписи UTF-8 «BOM» в начале текстового файла или вместо этого предполагали кодировку ANSI. Кодировка ANSI зависит от используемой локализованной версии Windows.

0 голосов
/ 12 июля 2020

Может попробовать с f.write(json.dumps(outtweets, indent=4, sort_keys=True, ensure_ascii=False))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...