读取csv数据结果包含“\t”的问题

1、实例

1、这个是我手动创建的csv文档,内容是从Word复制粘贴到表格
在这里插入图片描述
2、这是我读取数据用的代码

import csv

file = open(r"C:\Users\Administrator\Desktop\cs1.csv","r",errors="ignore",encoding="utf-8")
csv_file = csv.reader(file)

for i in csv_file:
    print(i)
file.close()

读取的结果:
['ID\t\tӢģ\t\tCODE']
['SP91FD79GFQU\t\tAndorra la Vella\t\tAD']
['THM3PVJHX1G2\tAr Ruways\tAr Ruways\t\tAE ']

有图中结果可以看出,打出出来的结果不仅没有了中文,并且每一个列结果后面都多了一个"\t"

3、在网上找了一些资料发现代码是没问题的,于是想着重新创建了一个数据,并且手动输入数据(表名为cs.csv,数据是一样的)
在这里插入图片描述
代码及结果如下:

import csv

file = open(r"C:\Users\Administrator\Desktop\cs.csv","r",errors="ignore")
csv_file = csv.reader(file)

for i in csv_file:
    print(i)
file.close()

结果:
['城市ID', '城市名', '城市名(英文)', '国家', '国家CODE ']
['SP91FD79GFQU', '安道尔', 'Andorra la Vella', '安道尔', 'AD ']
['THM3PVJHX1G2', 'Ar Ruways', 'Ar Ruways', '阿联酋', 'AE ']

与上面的对比可以发现,最后一个csv数据是手动重新创建的,“\t”的就没有了,可能是Word复制粘贴进去导致的问题;然后中文显示,取消了encoding="utf-8"之后,结果才正常显示了中文,看到网上介绍还需要加上这个,不清楚原因

2、csv的一些常用手法

1、使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容下面的代码可以读取csv的全部内容,以行为单位

import csv

path = r"C:\Users\Administrator\Desktop\cs.csv"
file = open(path,"r",errors="ignore")
csv_file = csv.reader(file)

for i in csv_file:
    print(i)
file.close()

结果:
['城市ID', '城市名', '城市名(英文)', '国家', '国家CODE ']
['SP91FD79GFQU', '安道尔', 'Andorra la Vella', '安道尔', 'AD ']
['THM3PVJHX1G2', 'Ar Ruways', 'Ar Ruways', '阿联酋', 'AE ']

2、提取其中某一列可以使用下面的方法

import csv

path = r"C:\Users\Administrator\Desktop\cs.csv"
file = open(path,errors="ignore")
csv_file = csv.reader(file)
column = [row[0] for row in csv_file]
print(column)
file.close()

结果:
['城市ID', 'SP91FD79GFQU', 'THM3PVJHX1G2']

3、读取前多少行

path = r"C:\Users\Administrator\Desktop\cs.csv"
eFile = open(path)
#读取csv文件
eReader=csv.reader(eFile)
#遍历csv对象获取数据,每一条数据都是一个list,每一列是list中的一个元素
#line_num是行号,这里只读取前100行
for row in eReader:
  if eReader.line_num <= 1:
    print('行 '+str(eReader.line_num) + ': '+str(row)) #打印行号
  else:
    break
#关闭文件
eFile.close()

结果:
行 1: ['城市ID', '城市名', '城市名(英文)', '国家', '国家CODE ']

4、 从列表写入csv文件,设置newline,否则两行之间会空一行

import csv

l1 = ["1","2","3"]
path = r"C:\Users\Administrator\Desktop\cs3.csv"
file = open(path,'w',newline='')
writer = csv.writer(file)
m = len(l1)
for i in range(m):
    writer.writerow(l1[i])
file.close()

结果:

在这里插入图片描述
5、使用列表多行写入

import csv

l1 = ['城市ID', '城市名', '城市名(英文)', '国家', '国家CODE ']
l2 = ['SP91FD79GFQU', '安道尔', 'Andorra la Vella', '安道尔', 'AD ']
l3 = ['THM3PVJHX1G2', 'Ar Ruways', 'Ar Ruways', '阿联酋', 'AE ']
path = r"C:\Users\Administrator\Desktop\cs4.csv"

with open(path, 'w',newline='') as csvFile:
    writer = csv.writer(csvFile)
    # 写入多行用writerows
    writer.writerows([l1, l2, l3])

结果:

在这里插入图片描述
6、从字典写入csv文件

import csv

path = r"C:\Users\Administrator\Desktop\cs5.csv"
dic = {'张三': 123, '李四': 456, '王二娃': 789}
csvFile3 = open(path, 'w', newline='')
writer2 = csv.writer(csvFile3)
for key in dic:
  writer2.writerow([key,dic[key]])
csvFile3.close()

结果:

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值