如何在python中打开名称中包含特殊字符的多个文件

如何在python中打开名称中包含特殊字符的多个文件,python,regex,pandas,numpy,Python,Regex,Pandas,Numpy,我有一个包含目录中所有文件名称的列表。文件名中有一个特殊字符。例如:-“MDH”\u data\u dump.csv、“PLD”\u data\u dump.csv等(单引号)。我试图通过一个列表运行一个循环,该列表将打开所有csv文件,将所有csv文件的数据附加到一个数据框中。但是我犯了一个错误。我可以像这样一次打开一个文件 recon_dataframe=pd.read_csv('\'BAL\'_data_dump.csv') 这是非常好的工作。但是如何运行所有文件的循环,我无法获得逻辑。

我有一个包含目录中所有文件名称的列表。文件名中有一个特殊字符。例如:-“MDH”\u data\u dump.csv、“PLD”\u data\u dump.csv等(单引号)。我试图通过一个列表运行一个循环,该列表将打开所有csv文件,将所有csv文件的数据附加到一个数据框中。但是我犯了一个错误。我可以像这样一次打开一个文件

recon_dataframe=pd.read_csv('\'BAL\'_data_dump.csv')
这是非常好的工作。但是如何运行所有文件的循环,我无法获得逻辑。请帮忙。我尝试的代码是:

recon_dataframe=pd.DataFrame()
  for i in range(0,len(csv_files)):
    recon_dataframe.append(pd.read_csv(csv_files[i][:5]+csv_files[i][5:])) 
csv\u文件是包含列表所有名称的列表。
此外,所有文件的名称格式相似。引号后的字符串是常量,唯一变化的部分是引号内的字符串,我用这种方法得到了答案

df1=pd.DataFrame()
for j in csv_files:
    p=j[1:4]
    df=pd.read_csv('\'{}\'_F47072_data_dump.csv'.format(p))
    df1=pd.concat([df,df1])
编辑:正确使用
concat
的方法如下:

df1 = pd.concat([pd.read_csv('\'{}\'_F47072_data_dump.csv'.format(j[1:4]))
                 for j in csv_files])

虽然结果的顺序可能不同,但速度会更快

为什么不在循环中转义引号呢?似乎是解决办法。你会犯什么错误?请提供完整的回溯。请注意,如果这是您的问题,但dataframe上的
append
方法与
list
不一样,您需要重新分配它:。因此,在循环中,它应该是
recon\u dataframe=recon\u dataframe.append(…
。为了提高效率,请参见本文底部并使用
concat
嗨,本,你说得对。一旦我重新分配,代码就起作用了。我以前不知道这个概念。谢谢你的及时回复。我还以稍微不同的方式解决了这个问题,我觉得这个问题非常有效。我在下面发布了答案。谢谢再次强调,注意安全:)我在您的示例中添加了使用
concat
的正确方法,希望使用concat(或append)有意义(并且有效)因为for循环中的每个迭代都会非常慢,如果你有很多迭代或者数据很大,你应该接受你自己的答案来结束这个问题,如果有人在后面添加更好的答案,你仍然可以在这个时候更改接受的答案。