ket*_*avo -1 python csv django serialization
这是我制作查询集的 csv 文件的函数
\n\n def esport_to_csv(self, tweets):\n with open(\'tweets.csv\', \'w\') as new_file:\n fieldnames = ["tweet_id", "text" , "user_screen_name", "user_name", "user_verified", "created_at", "user_time_zone", "user_location", "favorite_count", "retweet_count", "user_followers_count", "user_friends_count"]\n csv_writer = csv.DictWriter(new_file, fieldnames=fieldnames, delimiter=\'\\t\')\n csv_writer.writeheader()\n for tweet in tweets:\n line = []\n line.append(tweet["tweet_id"])\n line.append(tweet["text"])\n line.append(tweet["user_screen_name"])\n line.append(tweet["user_name"])\n line.append(tweet["user_verified"])\n line.append(tweet["created_at"])\n line.append(tweet["user_time_zone"])\n line.append(tweet["user_location"])\n line.append(tweet["favorite_count"])\n line.append(tweet["retweet_count"])\n line.append(tweet["user_followers_count"])\n line.append(tweet["user_friends_count"])\n csv_writer.writerow(line)\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的服务器响应
\n\nValueError: dict contains fields not in fieldnames: 967563194582515712, \'RT @KEEMSTAR: When you have your fathers car & you tell everyone on the internet that your 15 year old ass bought it. t.co/bUhhrPw0\xe2\x80\xa6\', \'TKBrotherTK\', \'Team Kalvin\', False, \'2018-02-25T06:23:36+05:30\', \'Melbourne\', \'Australia\', 0, 0, None, None\nRun Code Online (Sandbox Code Playgroud)\n\n这是函数调用的地方
\n\n@list_route(methods=["post"])\n def get_created_in_range(self, request):\n response = {}\n data = request.POST\n start = dateutil.parser.parse(data[\'start\'])\n end = dateutil.parser.parse(data[\'end\'])\n page_no = data[\'page_no\']\n export_to_csv = data.get(\'export_to_csv\', "false")\n tweets = Tweet.get_created_in_range(start, end, int(page_no))\n serializer = TweetSerializer(tweets, many= True)\n if export_to_csv == "true":\n self.esport_to_csv(serializer.data)\n print(type(serializer.data[0]))\n response["data"] = serializer.data\n return Response(response, status= status.HTTP_200_OK)\nRun Code Online (Sandbox Code Playgroud)\n\n如果你可以在这里找到上面的函数调用
\n\nif export_to_csv == "true":\n self.esport_to_csv(serializer.data)
\n\n我在网上看到了一个解决方案,但我不知道如何在这里应用它
\n您需要将 a 传递dict给DictWriter,并告诉它忽略额外的字段(如果存在)。尝试这个:
def esport_to_csv(self, tweets):
with open('tweets.csv', 'w') as new_file:
fieldnames = ["tweet_id", "text" , "user_screen_name", "user_name", "user_verified", "created_at", "user_time_zone", "user_location", "favorite_count", "retweet_count", "user_followers_count", "user_friends_count"]
csv_writer = csv.DictWriter(new_file, fieldnames=fieldnames, delimiter='\t', extrasaction='ignore')
csv_writer.writeheader()
for tweet in tweets:
csv_writer.writerow(tweet)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6995 次 |
| 最近记录: |