打印两次的问题解决了,确实是路径下还有另一个文件的原因。
至于CSV文件的问题,不太清楚具体,所以把文件上传在这里继续寻求大家的帮助。(因只能上传图片,所以烦请下载文件后把后缀改成.csv):
在做一个把CSV文件转化成excel的小程序,碰到一个使用逗号作为分隔符的问题。
代码如下所示:
import pandas as pd
import os
#找到当前程序文件的文件夹路径;
strAbsPath = os.getcwd() + "\CSV";
LstColname = [""]
for root, dirs, files in os.walk(strAbsPath):
for filename in files:
fullname=os.path.join(root,filename)
df = pd.read_csv(fullname, sep = ';', dtype='unicode')
i=0
for col in df.columns:
i = i+1
print(col)
print(i)
del df
使用的CSV文件的内容如下:
name,sex,age,location
Li,male,21,hunan
运行结果:
name,sex,age,location
1
name,sex,age,location
1
我的问题是:
为什么在设置sep=','后仍不然将列分隔开?我使用其它字符,例如空格,分号都没问题,就是使用逗号有问题。
我只有一个CSV文件的情况下,为什么同样的内容要打印两次。
可能是你本地的csv文件有问题吧,我把这里的代码和文件内容复制到自己机器上,结果是正常的
打印两次可能是因为你目录下有两个文件,一个是CSV文件,另一个不是CSV文件,然后内容还是一样的,你把filename打印出来看一下就知道怎么回事了。
代码里面是英文逗号吗?不是很理解你的意思,但是我的这里是可以的?
默认就是用逗号做分割符的,你不显式设置是什么结果
打印两次是缩进可能不对,你尝试一下下面代码
import os
import pandas as pd
# 找到当前程序文件的文件夹路径;
strAbsPath = os.getcwd() + "\cdv";
LstColname = [""]
for root,dirs,files in os.walk(strAbsPath):
for filename in files:
fullname = os.path.join(root,filename)
df = pd.read_csv(fullname,sep = ',',dtype = 'unicode')
i = 0
for col in df.columns:
i = i + 1
print(col)
print(i)
del df
编码问题,试一下,把这个去掉,dtype = 'unicode'
import os
import pandas as pd
# 找到当前程序文件的文件夹路径;
strAbsPath = os.getcwd() + "\cdv";
LstColname = [""]
for root,dirs,files in os.walk(strAbsPath):
for filename in files:
fullname = os.path.join(root,filename)
df = pd.read_csv(fullname,sep = ',')
i = 0
for col in df.columns:
i = i + 1
print(col)
print(i)
del df
原因
运行了下,
代码一切正常,
解决方法
可能是你输入的时候用了中文","而不是英文的","
修改成英文","试下。
同一类容打印2次大概率是因为你的这个代码包含了2次循环
for root, dirs, files in os.walk(strAbsPath):
for filename in files:
至于为什么你的那个csv按列打印出来是行我不太清楚,你可以把你的csv拿出来看看