Python基于分隔符的文本数据存取

举报
Python新视野 发表于 2022/04/28 18:46:06 2022/04/28
【摘要】 基于分隔符的文本数据文件以行尾各条数据的分隔,以各种分隔符(同一个文本数据文件中通常只使用一种)作为一条数据内不同列(字段)的分隔,存储需要处理的数据。下面是分别使用TAB制表符、逗号、空格、竖线作为分隔符的四个文本数据文件的例子。在Python中读写这类文件一般采用三种方法CSV模块、Numpy库、Pandas库。 CSV模块读写(1)读取reader()方法和writer()方法的del...

基于分隔符的文本数据文件以行尾各条数据的分隔,以各种分隔符(同一个文本数据文件中通常只使用一种)作为一条数据内不同列(字段)的分隔,存储需要处理的数据。下面是分别使用TAB制表符、逗号、空格、竖线作为分隔符的四个文本数据文件的例子。
在这里插入图片描述

在Python中读写这类文件一般采用三种方法CSV模块Numpy库Pandas库


CSV模块读写

(1)读取
reader()方法和writer()方法的delimiter参数指明了文件使用的分隔符。

import csv
with open('竖线.txt', encoding='utf-8') as cf:
    lines = csv.reader(cf, delimiter='|')
    for line in lines:
        print(line)

在这里插入图片描述

(2)写入

import csv
headers = ['姓名', '性别']
rows = [('张三', '男'), ('李四', '男'), ('王五', '男')]
with open('test.txt', 'a+', encoding='utf-8', newline="")as fp:
    wf = csv.writer(fp)
    wf.writerow(headers)
    wf.writerows(rows)

在这里插入图片描述


Numpy库读写

(1)读取

import numpy as np
data = np.loadtxt('竖线.txt', dtype=str, delimiter='|', unpack=False, encoding='utf-8')
print(data)

在这里插入图片描述
通过结果可以看到,Numpy库读取的结果和CSV模块读取的结果不同;Numpy读取的结果数据类型是ndarry,与CSV模块读取得到的list不同。

loadtxt()函数

loadtxt(fname, dtype=<class ‘float’>, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’)

各参数含义如下:

  • fname:要读取的带路径的文件名,如文件后缀是.gz或.bz2,泽稳健将被解压,然后再载入。
  • dtype:要读取的数据类型。
  • comments:文件头部或尾部字符串的开头字符,用于识别头部或尾部字符串。
  • delimiter:分隔字段(列)的字符串。
  • converters:将某列使用特定函数处理。
  • skiprows:跳过前若干行。
  • usecols:获取某些列,如需要前三列则为usecols=(0,1,2)。
  • unpack:取值为True时,每列数据以数组的形式返回。
  • ndmin:指定读取文件后存储数据的数组最少应具有的ndarry维度。
  • encoding:解码输入文件的字符集编码。

(2)写入

import numpy as np
data = [['姓名', '性别'], ['张三', '男'], ['李四', '男'], ['王五', '男']]
np.savetxt('test.txt', data, delimiter=',', newline='\n', fmt='%s, %s')

savetxt()函数

savetxt(fname, X, fmt=’%.18e’, delimiter=’ ‘, newline=’\n’, header=’’, footer=’’, comments=’# ', encoding=None)

各参数含义如下:

  • fname:要写入的带路径的文件名。
  • X:要存储的移位或二维数组。
  • fmt:控制数据存储的格式。
  • delimiter:分隔字段(列)的字符串。
  • newline:数据行之间的分隔符。
  • header:文件头部写入的字符串。
  • footer:文件末尾写入的字符串。
  • comments:文件头部或者尾部字符串的开头字符串,默认为#。
  • encoding:写入文件的字符集编码。

使用pandas库读写

(1)读取

import pandas as pd
df = pd.read_csv('竖线.txt', delimiter='|')
print(df)

在这里插入图片描述
(2)写入

import pandas as pd
dic = {'姓名': ['张三', '李四', '王五'], '姓别': ['男', '男', '男']}
df = pd.DataFrame(dic)
df.to_csv('test.txt', index=False)

三种方式的区别

  1. 读取数据以后得到的数据类型,以及写入文件后的数据格式不同。
  2. 主要功能和运行效率不同。CSV模块主要用于处理文本型数据的读写;而PandasNumpy的功能比CSV模块要强大很多,Numpy库主要用于面向高精度和高性能的计算,提供了大量统计相关的函数;Pandas库多用于时间序列的分析,可以便捷快速的处理大量连续性数据。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。