【问题标题】:Write filenames to csv with Pandas and Regex使用 Pandas 和 Regex 将文件名写入 csv
【发布时间】:2015-08-06 02:20:29
【问题描述】:

如何使用 Pandas 将文件名列表写入 csv 文件中的列?我也希望正则表达式只保留文件名的一部分。

使用 csv 模块,我是这样做的:

import os
import re
import csv

with open("file.csv","w") as write_csv:
    fieldnames = ["col1", "col2"]
    wr_header = csv.DictWriter(write_csv, fieldnames = fieldnames)
    wr_header.writeheader()
    wr_data = csv.writer(write_csv, delimiter = "\n")
    folder = os.listdir("/User/folder")
    for filename in folder:
        filesnippet = re.findall("snippet_(.{12})", filename)
        wr_data.writerow(filesnippet)

【问题讨论】:

  • 您能否指定您的代码是否有效以及如果无效会引发哪些错误?
  • @WajdiFarhani 更多的是我不知道如何使用 Pandas。像这样的东西? folder = os.listdir("/User/folder"); df = DataFrame(folder); for filename in df: isin_source = re.findall("filesnippet_(.{12})", filename); filename.to_csv("file.csv")
  • 您希望findall 返回一个包含可变数量元素的列表吗?还是我们可以假设它总能找到一个匹配项?
  • Findall 返回一个可变的元素列表,是的。谢谢!

标签: python regex python-2.7 pandas


【解决方案1】:

Pandas 数据框可以将列表作为构造函数。真正的问题是你在哪里做正则表达式的工作。在这里,我使用 pandas 字符串方法extract,它返回每行捕获的组。

pd.Series(os.listdir(directory)).str.extract(regex).to_csv(filename)

http://pandas.pydata.org/pandas-docs/version/0.15.2/generated/pandas.core.strings.StringMethods.extract.html

【讨论】:

  • 工作正常!谢谢。
猜你喜欢
  • 2013-05-31
  • 2016-12-30
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多