Python基于分隔符的文本数据存取
【摘要】 基于分隔符的文本数据文件以行尾各条数据的分隔,以各种分隔符(同一个文本数据文件中通常只使用一种)作为一条数据内不同列(字段)的分隔,存储需要处理的数据。下面是分别使用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)
三种方式的区别
- 读取数据以后得到的数据类型,以及写入文件后的数据格式不同。
- 主要功能和运行效率不同。
CSV
模块主要用于处理文本型数据的读写;而Pandas
和Numpy
的功能比CSV
模块要强大很多,Numpy
库主要用于面向高精度和高性能的计算,提供了大量统计相关的函数;Pandas
库多用于时间序列的分析,可以便捷快速的处理大量连续性数据。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)