【问题标题】:Why is this function so slow? How could I improve upon it?为什么这个功能这么慢?我该如何改进它?
【发布时间】:2022-07-29 00:27:58
【问题描述】:

此函数接收一个字符串并将其以 utf-8 格式写入 csv:

def to_csv(string, name):
    with open("CSV_" + str(name[:-4]) + ".csv", 'w', encoding='utf-8', newline='') as c:
        writer = csv.writer(c, delimiter=',')
        for i in range(len(string)):
            writer.writerow(string[i])
        c.write("\n")
    print("to_csv done")

但由于某种原因,它非常慢,我就是不知道为什么。 输入字符串是一个名词列表,一个开始为空的列表,我在一个占用更少的函数中附加了数千个名词。 以下是它作为示例输出的 .csv 的内容:

linktweet,urlajuntament,calvià,calvià,h
reyes,magos,repartiendo,ilusión,#calvià,#cabalgatadereyes,ajuntament,calvià,calvià
reyes,magos,repartirán,caramelos,#singlúten,gran,#cabalgata,calviànos,vemos,h,palmanova,ajuntament,calvià,calvià
buena,acogida,campaña,identificación,esterilización,gato,doméstico,calviàajuntament,calvià,calvià
extraído,toneladas,#residuossólidos,estaciones,bombeo,aguas,residuales,#calvià,ebar,tareas,limpieza,profundidad,instalaciones,ajuntament,calvià,calvià
fotos,gran,cabalgata,#ilusión,ajuntament,calvià,calvià
primera,presentación,avance,pgou,#calvià,ciudadanía,#participación,#transparencia,ajuntament,calvià,calvià
reunión,alianza,municipios,turísticos,sol,playa,fitur,seguimos,trabajando,mejorar,destino,#turismo,ajuntament,calvià,calvià
entrega,premios,ith,smart,destination,awards,#fitur,ajuntament,calvià,calvià
teniente,alcalde,turismo,reúne,director,oficina,española,turismo,frankfurt,#fiturajuntament,calvià,calvià
seguimos,#fitur,trabajando,promocionar,#calvià,destino,lleno,oportunidades,año,ajuntament,calvià,calvià
entrevista,hablar,#turismoajuntament,calvià,calvià
saludado,alumnado,turismo,ies,calvià,#fiturajuntament,calvià,calvià
agenda,encontrarás,actividades,realizan,municipio,pierdas,ajuntament,calvià,calvià

【问题讨论】:

    标签: python export-to-csv


    【解决方案1】:

    尝试使用writerows 而不是writerow,它将完全写入所有字符串:

    def to_csv(strings, name):
        with open("CSV_" + str(name[:-4]) + ".csv", 'w', encoding='utf-8', newline='') as c:
            writer = csv.writer(c, delimiter=',')
            writer.writerows(strings)
        print("to_csv done")
    

    【讨论】:

      猜你喜欢
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多