【问题标题】:How to remove double quotes from csv file如何从csv文件中删除双引号
【发布时间】:2022-01-20 23:02:49
【问题描述】:

当我打开生成的 csv 文件时,track_uri 列中有一些我无法删除的不需要的双引号。请告诉我如何删除它们?

程序的代码在这里:

import json
import csv
import os

input_data_dir = 'C:\\Users\\ProjectsDesktop\\dataset\\'
output_data_dir = 'C:\\Users\\Projects\\'


p_t_cols = ["pid", "track_uri"]
list_track_uri=[]


for filename in os.listdir(input_data_dir):
    if('.json' in filename):
        filepath = input_data_dir + filename
        print(filepath)
        data = json.load(open(filepath))
        playlists = data["playlists"]
        for p in playlists:
            line = [p["name"], p["collaborative"], p["pid"], p["modified_at"], p["num_tracks"], p["num_albums"], p["num_followers"]]

            pid = p["pid"]
            tracks = p["tracks"]
            for t in tracks:
                line = [t["artist_name"], t["track_uri"], t["artist_uri"], t["track_name"], t["album_uri"], t["duration_ms"], t["album_name"]]

                track_uri = t["track_uri"]


                line = [pid, track_uri]

                list_track_uri.append(track_uri)
uris= set(list_track_uri)


import random
final_uris=set(random.sample(uris, 500))
print(len(final_uris))
final_uris = ','.join(final_uris)



path=r'C:\\Users\\user\\Desktop\\ML Datasets\\'
filenames = os.listdir(path)
with open('submission.csv', mode='w', newline='', encoding='utf-8') as accounts:
    writer=csv.writer(accounts)


    for filename in sorted(filenames):
        if filename.startswith("challenge_set") and filename.endswith(".json"):
            fullpath = os.sep.join((path, filename))
            f = open(fullpath)
            js = f.read()
            f.close()
            mpd_slice = json.loads(js)
            writer.writerow(["pid",  "track_uri"])
            for playlist in mpd_slice["playlists"]:
                final_uris.replace('"', '')
                writer.writerow([playlist["pid"], final_uris])

Here is a screenshot from the output file

【问题讨论】:

  • 请更新以发布文本 不是图片。
  • 双引号是 CSV 格式的一部分,因此您不想删除它们。如果输出的值恰好包含一个逗号,则该值以双引号输出,以便读者知道将该逗号视为值的一部分而不是列分隔符。这是 CSV 文件的 RFC 4180 标准:ietf.org/rfc/rfc4180.txt

标签: python csv


【解决方案1】:

几个小时后,我找到了解决此问题的方法,如果将来有人需要,我会发布它。

我通过添加 quotechar= " "

将此行更改为
writer=csv.writer(accounts,  quotechar = " ")

感谢大家的帮助。

【讨论】:

    【解决方案2】:

    改变

    writer.writerow([playlist["pid"], final_uris])
    

    writer.writerow([playlist["pid"], *final_uris])
    

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 1970-01-01
      • 2021-12-16
      • 2018-07-27
      • 2017-02-13
      • 2014-02-24
      • 2021-02-22
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多