在python中打印.csv文件时出现空行

在python中打印.csv文件时出现空行,python,csv,Python,Csv,我正在使用基本块对.csv文件进行排序和打印。除了要打印的几行空行之外,它被正确地排序和打印,但它们不存在于实际的csv文件中 file = open("class1.csv", "r") sort = sorted(file,key=operator.itemgetter(0)) for eachline in sort: print (eachline) 问题是,在文件上迭代会在末尾留下换行符: >>> for i in open("a.py"): ...

我正在使用基本块对.csv文件进行排序和打印。除了要打印的几行空行之外,它被正确地排序和打印,但它们不存在于实际的csv文件中

file = open("class1.csv", "r")
sort = sorted(file,key=operator.itemgetter(0))
for eachline in sort:
    print (eachline)

问题是,在文件上迭代会在末尾留下换行符:

>>> for i in open("a.py"):
...     print(repr(i))
... 
'import math\n'
'\n'
'\n'
<snipped>
解决这一问题的最简单方法(我假设您使用的是Python 3,从带有
print
的括号判断)是使用
end
选项进行
print

for eachline in sort:
    print(eachline, end="")
这将阻止
打印
添加额外的
“\n”
(它将添加
,而这不起任何作用),因此没有额外的换行符:

>>> print("import math\n", end="")
import math
>>>
如果您使用的是python 2或不想修改
打印
,可以使用
str.replace
剥离
“\n”

for eachline in sort:
    print(eachline.replace("\n", ""))

运算符。itemgetter(0)
将按每行的第一个字符进行排序。您确定您没有尝试按CSV的第一列进行排序吗?使用“替换”非常有效,谢谢@matsjoyce@Harry请你回答这个问题,好让其他用户知道这个问题已经解决了吗?谢谢。对于Python2,您可以简单地使用
print eachline,
来抑制
print
语句通常添加的换行符。这相当于Python 3中的
print(eachline,end=“”)
函数调用。
for eachline in sort:
    print(eachline.replace("\n", ""))