簡體   English   中英

數據流結果中ast.literal_eval()的語法無效

[英]Invalid Syntax on ast.literal_eval() from data streaming result

我正在使用tweepy進行流式處理,並使用json.loads來獲取數據。 我將其另存為txt文件。

def on_data(self, data):
    all_data = json.loads(data)
    save_file.write(str(all_data)+"\n")

現在我想從數據中提取幾個屬性,但是問題是當我使用ast.literal_eval()來解決引號和逗號錯誤時,我又遇到了另一個錯誤。

    Traceback (most recent call last):

  File "C:\Users\RandomScientist\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-27-ffea75fc7446>", line 3, in <module>
    data = ast.literal_eval(data)

  File "C:\Users\RandomScientist\Anaconda3\lib\ast.py", line 48, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')

  File "C:\Users\RandomScientist\Anaconda3\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)

  File "<unknown>", line 2
    {'created_at': 'Thu Apr 04 07:00:10 +0000 2019', 'id': 1113697753530392577, 'id_str': '1113697753530392577', 'text': 'Karena kita adalah suratan terbuka kasih-Nya untuk dunia  \n#iamthemessenjah (link)', 'source': '<a href="http://www.facebook.com/twitter" rel="nofollow">Facebook</a>', 'truncated': False, 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'user': {'id': 234355404, 'id_str': '234355404', 'name': 'Messenjah Clothing', 'screen_name': 'MessenjahCloth', 'location': 'YOGYAKARTA', 'url': 'http://www.messenjahclothing.com', 'description': 'THE WORLD CHANGER pages : http://www.facebook.com/messenjahclothingdotcom pin: 578CD443 WA: +6285 727 386 267 IG: @the_messenjah IG product @messenjahstore', 'translator_type': 'none', 'protected': False, 'verified': False, 'followers_count': 3405, 'friends_count': 190, 'listed_count': 7, 'favourites_count': 204, 'statuses_count': 58765, 'created_at': 'Wed Jan 05 13:13:10 +0000 2011', 'utc_offset': None, 'time_zone': None, 'geo_enabled': True, 'lang': 'en', 'contributors_enabled': False, 'is_translator': False, 'profile_background_color': '7E808A', 'profile_background_image_url': 'http://abs.twimg.com/images/themes/theme3/bg.gif', 'profile_background_image_url_https': 'https://abs.twimg.com/images/themes/theme3/bg.gif', 'profile_background_tile': False, 'profile_link_color': '0400DB', 'profile_sidebar_border_color': '000000', 'profile_sidebar_fill_color': '252429', 'profile_text_color': '666666', 'profile_use_background_image': True, 'profile_image_url': 'http://pbs.twimg.com/profile_images/882803510932156417/KenYVq-i_normal.jpg', 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/882803510932156417/KenYVq-i_normal.jpg', 'profile_banner_url': 'https://pbs.twimg.com/profile_banners/234355404/1523949182', 'default_profile': False, 'default_profile_image': False, 'following': None, 'follow_request_sent': None, 'notifications': None}, 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'quote_count': 0, 'reply_count': 0, 'retweet_count': 0, 'favorite_count': 0, 'entities': {'hashtags': [{'text': 'iamthemessenjah', 'indices': [60, 76]}], 'urls': [{'url': 'https: (link)', 'expanded_url': 'https://www.facebook.com/messenjahclothingdotcom/posts/2575823355778752', 'display_url': 'facebook.com/messenjahcloth…', 'indices': [77, 100]}], 'user_mentions': [], 'symbols': []}, 'favorited': False, 'retweeted': False, 'possibly_sensitive': False, 'filter_level': 'low', 'lang': 'in', 'timestamp_ms': '1554361210602'}
    ^
SyntaxError: invalid syntax

這是我的代碼

with open('pre-process.txt','r') as file:
    data = file.read()
    data = ast.literal_eval(data)
    print(data)

而且我一直在閱讀多個使用ast.literal_eval錯誤的答案,例如Python請求語法無效? 字典字符串上的Python ast.literal_eval無法正常工作(SyntaxError:語法無效),但沒有找到合適的解決方案。 任何想法? 提前致謝。

似乎文件中的每一行都有一個值,因此您需要一次讀取一行並在該行上調用ast.literal_eval() ,而不是嘗試一次評估整個文件。

with open('pre-process.txt','r') as file:
    for line in file:
        data = ast.literal_eval(line)
        print(data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM