使用Python CSV读取Excel导出的CSV文件时如何去除每行末尾的\n
解决CSV文件读取时每行末尾带\n的问题
嘿,我看到你的问题啦——读取CSV时每行末尾都带着\n,其实问题出在你代码里的一个小细节上,咱们一步步来解决:
首先,你初始化了csv.reader对象spamreader,但从头到尾都没用到它,反而直接遍历了原始的文件对象csvfile,这样读出来的每一行自然会保留换行符\n。下面给你两种靠谱的解决办法:
方法一:用csv.reader正确读取(推荐)
csv模块的reader对象会自动帮你处理换行符和分隔符,这也是它存在的意义呀~ 因为你指定了dialect=csv.excel_tab(制表符分隔),如果你的CSV每行只有一列数据,那reader返回的每一行是一个包含单个元素的列表,取这个元素就好:
import csv with open('/users/ps/downloads/test.csv', 'r', newline='') as csvfile: # 注意:Python 3里'rU'模式已经弃用,推荐用newline=''来适配不同系统的换行符 spamreader = csv.reader(csvfile, dialect=csv.excel_tab) a = [] for row in spamreader: a.append(row[0]) print(a)
要是想代码更简洁,还可以用列表推导式优化:
import csv with open('/users/ps/downloads/test.csv', 'r', newline='') as csvfile: spamreader = csv.reader(csvfile, dialect=csv.excel_tab) a = [row[0] for row in spamreader] print(a)
方法二:直接处理每行的换行符
如果坚持要直接遍历文件行,那可以用字符串的strip()方法去掉首尾的空白字符(包括换行符);如果担心数据本身有首尾空格需要保留,就用rstrip('\n')只去掉末尾的换行:
with open('/users/ps/downloads/test.csv', 'r') as csvfile: a = [] for row in csvfile: # 去掉所有首尾空白(包括换行、空格) a.append(row.strip()) # 或者只去掉末尾换行:a.append(row.rstrip('\n')) print(a)
这样改完之后,输出就会是你想要的['HEADER', 'a', 'b', 'c', 'd', 'e']啦~
内容的提问来源于stack exchange,提问作者Sapna Sharma
相关产品推荐
相关产品推荐

