【问题标题】:Exporting multiple csv files with dynamic naming使用动态命名导出多个 csv 文件
【发布时间】:2018-10-28 00:17:19
【问题描述】:

我在 Python 中创建了大约 200 个 csv 文件,现在需要全部下载。

我使用以下方法从单个文件创建文件:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv(n+'stars'+'.csv')

当我尝试使用相同的语句导出到我的机器时,我得到一个语法错误,我不确定我做错了什么:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')

错误:

  File "<ipython-input-27-43a5bfe55259>", line 3
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')
                                                 ^
SyntaxError: invalid syntax

我在 Jupyter 实验室,所以我可以单独下载每个文件,但我真的不想这样做。

【问题讨论】:

  • 试试g.to_csv('C:\Users\egagne\Downloads\'+str(n)+'stars.csv')的思路

标签: python python-3.x pandas jupyter jupyter-lab


【解决方案1】:

您可能混淆了整数和字符串,并且在文字中使用反斜杠无论如何都是危险的。考虑使用以下

import os

在循环中

    f_name = os.path.join('C:', 'users', ' egagne', 'Downloads', str(n), 'stars.csv')
    g.to_csv(f_name)

os.path.join 为您处理反斜杠。

【讨论】:

    【解决方案2】:

    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'') 需要是 g.to_csv('C:\\Users\\egagne\\Downloads\\'+n+'stars.csv').

    有两件事是错误的——反斜杠是一个转义字符,所以如果你在它后面加上一个',它将被视为你的字符串的一部分,而不是你想要的结束引号。使用 \\ 而不是单个 \ 会转义转义字符,以便您可以在字符串中包含反斜杠。

    另外,您的引号配对不正确。 n 是一个变量名,但从您问题中突出显示的语法来看,很明显它是字符串的一部分。同样,您可以看到stars.csv 没有作为字符串的一部分突出显示,而结束的'' 应该是出现问题的危险信号。

    编辑:我解决了导致问题的原因,但 Ami Tavory 的答案是正确的——尽管您知道这将在 Windows 上运行,但最好将 os.path.join() 与目录名称一起使用,而不是写出字符串中的路径。如果您完全不确定 n 的类型,str(n) 也是正确的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2019-01-05
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      相关资源
      最近更新 更多