快速识别 csv 文件中的多个表?

比奥吉特

我有很多 csv 文件,我必须从中提取路径和标题。我为此目的使用的 python 脚本就像一个魅力:

#!/usr/bin/python
import os
import csv
thisdir = os.getcwd() 

# Create empty list for csvfiles
csvfiles = []

# Extract file-paths and append them to "csvfiles"
for r, d, f in os.walk(thisdir):    # r=root, d=directories, f = files
    for file in f:
        if ".csv" in file:
            csvfiles.append(os.path.join(r, file))

# Create header-extraction function:
def get_csv_headers(filename):
    with open(filename) as f:
        reader = csv.reader(f, delimiter=",") 
        return next(reader)

# Create empty list for headers
headers=[]

# Extract headers with the function and append them to "headers" list
for l in csvfiles:
    headers.append(get_csv_headers(l))

with open('text.csv', 'w') as f:
    writer = csv.writer(f, delimiter=',') # In EU: use semicolon; else comma
    for path, header in zip(csvfiles, headers):
        writer.writerow(list(path.split("/")[1:]) + header)

但!我刚刚意识到某些 csv 文件包含多个表!表的“分隔”方式没有一致性——有些有多行空间,有些没有。标题都包含字母和表格行号(一些后面跟着字母)。遍历所有 +200 个 csv 文件以检查单个 csv 文件中是否有多个表似乎是一项繁琐的任务。

您是否知道我可以通过任何方式快速识别哪些 csv 文件包含多个表(命令行或类似文件),在一个 csv 中提取多个表的标题 - 或者我不必打开和浏览所有 csv 的其他创意文件。任何想法(命令行/python)都非常(!)欢迎!

谢谢!

干杯,比吉特

斯蒂芬

如果您只想知道,哪个文件包含多少个标题(假设标题中没有数字):

@echo off
for %%f in (*.csv) do (
  for /f %%i in ('findstr /v "[0-9]" "%%f" ^|find /c /v ""') do (
    echo there are %%i Headers in %%f
  ) 
)

外部for迭代您的.csv文件,内部for通过过滤没有数字的行(带findstr /v "[0-9])并计算它们(带find /c)来获取每个文件的标题计数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章