在使用python读取用WPS打开的csv文件时读取到空白行的问题

在学习《python数据分析基础》2.6节:读取多个CSV文件时发现一个问题,这一节给了一个
脚本用于计算某路径下所有csv文件的行,列数.

import csv
import sys
import os
import glob
input_path=sys.argv[1]
file_counter=0
for input_file in glob.glob(os.path.join(input_path,'sales_*')):
    row_counter = 1
    with open(input_file,'r',newline='') as csv_in_file:
        filereader = csv.reader(csv_in_file)
        header=next(filereader,None)
        for row in filereader:
            row_counter+=1
        print('{0!s}:\t{1:d} rows \t{2:d} columns'.format(\
          os.path.basename(input_file),row_counter,len(header)))
    file_counter+=1
print('Number of files:{0:d}'.format(file_counter))

原本书中给的数据文件是这样的:
数据是书上给的,7行5列的数据,csv文件是我自己手动录入的..
数据是书上给的,7行5列的数据,csv文件是我自己手动录入的.

由于WPS表格单元格过小,在录入数据后拉伸各行列宽,高:
有部分空白行被我批量拉伸宽高时选中
有部分空白行被我批量拉伸宽高时选中

然后执行脚本,发现被批量拉伸宽高时选中的空白行也被计算入文件的行数:
图片说明

将这些被拉伸宽高的空白行删去后再次执行脚本,结果正常:
图片说明

综上,发现在WPS里打开CSV文件后如果在拉伸各行列的高宽时,选中了没有内容的空白行,
这些空白行会在文件读取对象中被迭代,导致空白行被计算,请问这是为什么?

4个回答

1、这些空白行虽然没有数据,但是是数据,因为你已经操作过。
2、你可以保存成csv文件,然后用文本编辑器打开,nodepad++之类的,可以看到不可见字符,最后几行应该只有换行符。

你用记事本打开CSV会发现,有” , , , , , ,“这样的空行,你把它删除就可以了

感谢weixin_42920757 ,xingjianfengaa 两位道友的回答,用文本编辑器打开后发现的确存在不可见字符图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
读CSV文件问题?
如果在CSV文件中一个单元格里的数据是这样的rna,b" 那么读出来的结果为 "a,b""" 带逗号的单元格读出来外层用""号括起来,而"读出来是""。rnCSV本身是用逗号分格的,如果单元格里有逗号该如何解析?
python学习笔记-CSV文件读
将数组或者矩阵存储为csv文件可以使用如下代码实现: numpy.savetxt('new.csv', my_matrix, delimiter = ',')
Python csv文件空白行问题
import csv if __name__ == '__main__': excel = ['column1', 'column2', 'column3'] stockFile = open('stockFile.scv', 'w+') csvWriter = csv.writer(stockFile) for i in range(3): ...
matlab读csv文件
MATLAB 读csv文件 带有字符串的csv文件 我要读入的数据: 可以看到他是有抬头,并且不是纯数据的csv文件。 如果使用csvread读取 data=csvread('mc1data.csv',1,0);%csvread只能读取纯数据 csvread(fid,start row,start column) fid:要读取的csv文件名 start row:开始读取的行(第一行是0,第...
读csv文件?
public class TestCsv { public static void main(String[] args) throws IOException { //加载csv文件 write(); read(); } public static void write() throws IOException { File f=new File("D:...
VC6.0读CSV文件
网上有很多类似例子,但很多在VC6.0环境下不能使用, 例子在《把脉VC++》第6章源码基础上进行修改。主要修改内容包括:vc6.0中GetCount()没有,用GetSize代替;Tokenize采用AfxExtractSubString进行代替;书中源码在VC6.0环境下不能直接使用,但是整个编程思想还是很值得借鉴。在此向原作者致敬。例子主要功能包括: 1、实现对test.csv文件的读写(例子主要是读); 2、可以辨别CSV文件中的注释行(例子以符号“;”为注释行); 3、可以剔除空行; 注:由于本人非编程专业,代码不一定简洁,非喜勿喷,有问题可联系,共同探讨。
Spark读CSV文件
spark可以自动csv文件判断字符类型 原文件内容如下: parent_order_no,member_id,union_id,create_time,create_date TW168E93658FBHBSATPTX9866,33459866,ohmdTt1gcNVNORpm_onak1nOTduE,2019-02-14 07:34:39,2019-03-07 TW169383A50F2RPX...
读CSV文件数组
  CSV文件:faceDeepid_last.csv import numpy my_matrix = numpy.loadtxt(open("faceDeepid_last.csv","rb"),delimiter=",", skiprows=0) >>> print(my_matrix) [[ -74.9792   99.6281 -141.025  ...  -30....
CSV文件读和写
把数据存储到CSVCSV(Comma-Separated Values, 逗号分隔值)是存储表哥数据的常用文件格式 从零开始创建一个CSV文件:import csvcsvFile = open("../test.csv","w+") try: writer = csv.writer(csvFile) writer.writerow(('number','number plus 2
matlab读csv文件问题
用csvread()函数会报错 Error using dlmread (line 143) Mismatch between file and format string. Trouble reading 'Numeric' field from file (row number 1, field number 6) ==> clear,Ghoul\n Error in csvr
关于读CSV文件的问题
我代码这样写的 rn[code=VB]rnrnintFile =FreeFilernrnopen strFilePath For Input as #intFilernrnLine Input #intFile, strLinernrnstrArr = Split(strLine,",")rn[/code]rnrn但如果CSV文件里面有特殊字符的话,比如"→",后面的内容就读不出来了,rnrn而且当CSV里某个字段包含","时,导入数据库时就会失败rnrn请问上面两个问题怎么解决!
VBS 读CSV文件的问题
问题是这样的,用vbs写的一个功能,从FTP 服务器上拿下来CSV文件,然后上传到数据库rn文件是繁体的,而且我用的是"ADODB.Connection"来读取数据的,rn现在的问题是 读到的文件是乱码 放到数据库也是乱码rnrn另外,我是在服务器上运行的VBS 文件 出现乱码rn在我本地 我本地的区域语言里面添加了 非Unicode程序语言 中文(台湾) 运行就显示正常rn而服务器上没有添加 就显示乱码rnrn请问有没有一个好的方法 不通过修改服务器环境 只是通过代码来解决这个乱码的问题呢? 任何一件都可以,非常感谢!!!
C# 读CSV文件问题?
rnCSV文件数据格式如下:rn00,4E,00,9F,01,68,02,EE,7F,F0,08,01,00,00,01,38,7F,F0,08,01,00,00,01,51,00,00,00,33,00,87,FF,FF,00,C3,04,F3,FF,FF,00,27,08,28,01,41,1B,00,19,03,0C,0C,00,04,00,0A,28,00,0B,00,12,06,15,17,17,00,00,00,00,00,00,00,00,00,00,00,00,00,00,25,3F,rnrn用oldb的方式将数据读出到datatable,在从datatable中取数据出来时会发现如00则为0,01则为1。rn请问如何才能让其按原字符输出出来?
CStdioFile 读csv文件偶尔读不出
//新建rn CStdioFile mFile1;rn CString n_read_data,n_str;rnrn mFile1.Open(_T("\\NandFlash\\parameter.csv"),CFile::modeCreate | CFile::modeNoTruncate);//新建文件 参数rn mFile1.Close(); //关闭File rn//读rn if(mFile1.Open(_T("\\NandFlash\\parameter.csv"),CFile::modeRead)) //读第一行rn rn mFile1.SeekToBegin(); //找到起点rn mFile1.ReadString(n_read_data); //读回表头 rn rn mFile1.Close(); //关闭File rnrn问题出在mFile1.ReadString(n_read_data); 这句上,如果每行字符串很短则百分百读成功,如果很长则有时正常有时不正常,不正常时执行到这句会进入wincore.cpp文件,然后就不晓得跑到哪去了。不晓得是配置问题还是CStdioFile 自身就不稳定,请赐教
解决csv文件读取时第一列无法读取到的问题
解决csv文件读取时第一列无法读取到的问题 在使用opencsv做csv文件导出与导入的时候,由于导入的csv文件带有bom标识,导致老是文件的第一列无法读取,下面贴出解决方法: 症状: 使用opencsv进行文件读取时,无法读取到第一列的内容 原因: csv文件带有bom头 解决方法: 方法一:notepad++打开csv文件,在“编码”处选择“使用utf-8...
Python学习:读csv文件并显示
  “雇员.csv” 文件内容: 雇员ID,姓氏,名字,职务,尊称,出生日期,雇用日期,地址,邮政编码 1,张,颖,销售代表,女士,1968/12/8,1992/5/1,复兴门 245 号,100098 2,王,伟,副总裁(销售),博士,1962/2/19,1992/8/14,罗马花园 890 号,109801 3,李,芳,销售代表,女士,1973/8/30,1992/4/1,芍药园小区 7...
python读,写csv文件的2种方法
最常用的一种方法,利用pandas包 import pandas as pd #任意的多组列表 a = [1,2,3] b = [4,5,6]     #字典中的key值即为csv中列名 dataframe = pd.DataFrame({'a_name':a,'b_name':b}) #将DataFrame存储为csv,index表示是否显示行名,default=True datafra...
利用python读csv数据
第一种 pandas 读取,注意最后的print import pandas as pd train = pd.read_csv('F:\O2O\My data\ccf_offline_stage1_train.csv') train.head(5) #显示前5行数据 train.tail(5) #显示后5行 train.columns #查看列名 train.info() #查看各字
读CSV文件小实例
用VB.NET2003在日文系统下编写的一个读取CSV文件.其中用运了FLEXGRID插件
MSComm控件读CSV文件
MSComm控件相关使用代码,读取CSV文件,程序可正常运行
怎么读CSV格式的文件?
我现在想写一个程序读CSV格式的文件,并取其内容以表格的形式显示出来,请问该怎么读这个文件啊?rn多谢多谢。。。。。
csv文件的读与写1
csv文件的读与写,通过程序修改生成csv文件
用 delphi读csv文件,
请高手看看到底是什么问题,读不出来数据啊,用记事本打开看明明是三条记录,可循环了5次。不明白问题到底出在哪rn[code=Delphi(Pascal)]rn typern sjjl3=recordrn sj:string[8];rn rq:string[10];rn yl:integer;rn end;rnrnvarrn zcxx1:sjjl3;rnrnrn AssignFile(F1,'W1.csv');rn Reset(F1);rn seek(F1,2); //从第二行读起rn while not(eof(F1)) dorn beginrn read(F1,zcxx1);rn ...... rn endrn[/code]
读\t分隔的csv文件
judgedoc_info_field=['litigant_name','judgedoc_cnt','litigant_defendant_contract_dispute_cnt', 'litigant_defendant_bust_cnt', 'defendant_judgedoc_cnt'] judgedoc_info_...
vc++读取用AUTOCAD绘制的DXF文件
首先用vc++读取用AUTOCAD绘制的DXF文件,并且将图形绘制出来。操作比较简单。
这样的csv文件怎么读?
1,391,0,"港岛区,炮台山",0,"",0,"",2007-01-22 00:44:23.990000000,
csv文件读下用的jar包
public void readCsv(String path) { try { // 一般,Uses ISO-8859-1 as the Charset. CsvReader cr1 = new CsvReader(path); // 有中文的 CsvReader cr2 = new CsvReader(new FileReader(new File(path))); // 需要指定读入编码的 CsvReader cr = new CsvReader(new InputStreamReader(new FileInputStream(new File(path)),"UTF-8")); while (cr.readRecord()) { // 当前行号,从0开始 System.out.println("current record: " + cr.getCurrentRecord()); // 本行内容 System.out.println("RawRecord:" + cr.getRawRecord()); // 每一列的内容 System.out.println("getValues() "); for (String s : cr.getValues()) { System.out.print("--" + s); } System.out.println(); } } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } public void writeCsv(String path,Interview interview) { try { String csvFilePath = path;//测试地址 CsvWriter wr =new CsvWriter(csvFilePath,',',Charset.forName("utf-8")); String[] contents = {"aaaaa","bbbbb","cccccc","ddddddddd","不知道中文会不会乱码呢"}; //这个只是测试数据,具体要怎么样的形式保存待定 wr.writeRecord(contents); wr.close(); } catch (IOException e) { e.printStackTrace(); } }
如何读取用|分隔的记录?
在数据库里面有一个记录上传文件的字段值是类似这样子的:rnupload/01.jpg|upload/02.jpg|upload/03.jpg|upload/04.jpg|rnrn有什么办法可以把每个文件名逐个显示呢?rnrn先谢谢啦
使用ClosedXML,读取到空行
最近项目中使用了ClosedXML.dll来处理Excel,在读取Excel的时候,用workSheet.Rows()获取Excel行数,默认读取Excel最大行数1048576 所以为了读取到不是空的Row,那就要利用LastRowUsed().RowNumber()判断出有内容的最后一个行数 解决方案如下: using ClosedXML.Excel; ... int lastRow...
java读CSV使用的jar包
java读取CSV所用包,请需要的朋友下载
读取用“,”分割的多个字符串
我数据库中的“ 账号”列的内容为 yyq6023,zn3210,mmy2557,的形式rn我现在要将其逐一读出并显示,并根据每一个账号再在另一个库里把相对应的姓名再读出来。rn用ASP应该怎么写呢,请各位大虾指导,希望有具体的相似的代码,
怎么读取用|分隔的图片?
数据库里product表的Pic字段是用来记录上传的图片名的,rn记录是类似这样的:rnupload/pic_1.jpg|upload/pic_2.jpg|upload/pic_3.jpg|upload/pic_4.jpg| rnrn用下面的查询语句rn<%rnset Rs=server.CreateObject("ADODB.RecordSet")rnsql="select * from product where id="&idrnRs.Open sql,conn,3,1 rn%>rn<%rn s=split(Rs("Pic"),"|")rn Response.Write join(s," ")rn%>rnrn得到的结果是这样:rnupload/pic_1.jpgrnupload/pic_2.jpgrnupload/pic_3.jpgrnupload/pic_4.jpgrnrn如果我想得到像下面这种效果,查询语句要怎样写呢?rn rn rn rnrnrnrnrn
读CFile打开的文件时,怎么从后向前读
先用CFile打开一个文件,然后写入几个字串rnCFile mFile;rnmFile.Open("111",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);rnCArchive ar(&mFile,CArchive::store);rnCString str1("abc"),str2("def"),str3("ghi");rnar<
Python csv模块读csv文件,编码问题处理
Python csv模块读csv文件,编码问题处理 import csv file_rute:文件路径 with open(file_rute,&quot;r+&quot;) as csvfile: reader=csv.reader(csvfile) for i,rows in enumerate(reader): #i=行数 #rows=行的数据,为list #处理csv数据逻...
用 TMemoryStream 的 ReadComponent 读取用 WriteComponent 保存的文件时出错
我想用 TMemoryStream 保存并且读取窗体的所有内容。因为一旦控件多了,用INI文件会很麻烦。rn可是就是这么简单的程序还时出错,当写入文件时没有任何问题。rn可是读取以前保存的文件会出现下面的问题:rn1、当用 ReadComponent 读取内容到控件后,窗体的名字会在原来的基础上加 _1 ,比如原来的窗体名称 Form1 ,那么读取后变成了 Form1_1 。如果再次调用 WriteComponent ,那么依此类推,后面会添加无数个 _1 。rn 这个问题不通过改变窗体名能解决吗?能分析一下怎么回事吗?rnrn2、多次调用 ReadComponent 读取内容到控件后会出现错误。rnrn其他想要实现的功能:rn1、在用 TMemoryStream 保存窗体内容时,是否能修改 TMemoryStream 中已经保存的窗体属性然后再写入到文件。rnrnrn如果大家还有什么其他保存窗体完整内容方法,请不吝赐教。谢谢!rnrnrnrn这是我试验的代码。rnrnunit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, StdCtrls;rnrntypern TForm1 = class(TForm)rn Button1: TButton;rn Button2: TButton;rn procedure Button1Click(Sender: TObject);rn procedure Button2Click(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rnrnimplementationrnrnusesrn Unit2;rn$R *.dfmrnrnprocedure TForm1.Button1Click(Sender: TObject);rnvarrn ms: TMemoryStream;rnbeginrn ms:=TMemoryStream.Create;rn tryrn ms.WriteComponent(Self);rn ms.SaveToFile('d:\a.txt');rn finallyrn ms.Free;rn end;rnend;rnrnprocedure TForm1.Button2Click(Sender: TObject);rnvarrn ms: TMemoryStream;rn i: Integer;rnbeginrn ms:=TMemoryStream.Create;rn tryrn ms.LoadFromFile('d:\a.txt');rn rn for i := Self.ComponentCount - 1 downto 0 dorn Self.Components[i].Free;rnrn ShowMessage(Self.Name);rnrn ms.ReadComponent(Self);rnrn ShowMessage(Self.Name);rn finallyrn ms.Free;rn end;rnend;rnend.
判断是否读取到文件结尾问题
在c语言中,判断文件结尾有两种方法,第一种是使用feof()函数,feof(fp)用于测试fp所指向的文件的当前状态是否为“文件结束”。如果是,函数则返回的是非0值(真),否则为0(假),要注意的是,feof()是先读文件在判断是不是到达文件结束,所以当使用feof()作为循环判断条件的话,就需要注意一种情况,就是当文件为空的时候,它也会读取一次文件内容然后再跳出循环,所以有可能会读取到一些不可知...
用ADODB读csv文件的问题!
csv文件是这样的:rn0001,1,20050705,JAN,Journal Import Created,0,1043,CNY,,420,1rn0002,1,20050705,JAN,broker fee for Accelerator 4L 2ea shipment,0,1203,CNY,500,,1rn……rn我用adodb读文件 连接字符串如下:rnConnectionString = "Driver=Microsoft Text Driver (*.txt; *.csv);DBQ=" & filePath& ";Extensions=asc,csv,tab,txt;Persist Security Info=False"rnrn读的时候rs.Fields(0).Value 会把0001的0过滤掉,但是客户要求0必须要,而且位数不定。rnrn请各位帮忙,把0001完整的读出来!谢谢!分不多了,少了些,很抱歉!rnrn
读excel文件时的问题。
excel文件中的字段明明全都不为空的,但读取来得到该这字段的值有时是正确的,有时却得到空值。rnrn不知道大伙有没碰到这个问题, 有没有什么解决方案??
读和写文件python
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) Open file and return a corresponding file object. If the file cannot be opened, an OSError is r...
python 读词向量文件
# String embedFile def readEmbedFile(embedFile): embedId = {} input = open(embedFile,'r') lines= [] for line in input: lines.append(line) nwords
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表