我是Python的新手,所以这个问题可能有点基础.我有44个csv文件具有相同的标题和不同的文件名.我想将它们全部合并到一个文件中.
每个文件名为"Votes- [member-name] - (2010-2014) - [download-time] .csv"
标头不包含成员名称的列.我想补充一点,作为第一项.
这是我想要做的部分:如何在Python中合并200个csv文件.我只是不确定如何遍历具有不同名称的文件,并将这些名称添加到csv.
谢谢!
要遍历文件名,您可以使用类似于此处回答的方法,使用glob:
import glob
import os
os.chdir("/mydir")
for files in glob.glob("*.csv"):
print files
Run Code Online (Sandbox Code Playgroud)
然后,要将成员名称添加到标题,您可以逐行打印所有csv文件.如果该行是标题,则在与标题相同的行上打印成员名称.(这不是真正的代码,但你可以得到这一点)
for files in glob.glob("*.csv"):
for lines in files:
if line == header:
print member,line
else:
print line
Run Code Online (Sandbox Code Playgroud)
拆分CSV文件并仅使用成员名称(稍作修改,以便没有连字符)
'Votes-[member name]-(2010-2014)-[download-time].csv'.split('-')[1]
Run Code Online (Sandbox Code Playgroud)
更新bash的解决办法:你可以保存这个文本,并从终端运行(见说明这里适用于Mac)
生成CSV文件(不是必需的)
cat <<"EOF" > 1.csv
1,2,3
4,5,6
EOF
cat <<"EOF" > 2.csv
a,b,c
d,e,f
EOF
Run Code Online (Sandbox Code Playgroud)
解析CSV文件 - 此脚本获取所有CSV文件并将其文件名写为第一列.它还将它们放入一个文件中(注意我在debian linux上测试过,而不是mac).
rm -f all.csv
for fyle in *.csv ; do
echo | awk -v f=$fyle '{ print f","$0 }' $fyle >> all.csv
done
exit 0
Run Code Online (Sandbox Code Playgroud)
第二个更新:如果你想删除重复的标题,最简单的方法是使用'grep -v',它选择所有不匹配的行.您可以选择仅存在于标头中的通用字符串.
head -1 all.csv > nohead.csv # add one header line
grep -v "header string" all.csv >> nohead.csv # add rest of rows, with no headers
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |