Python 数据处理(三十六)—— 文本数据处理(续)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 数据处理(三十六)—— 文本数据处理(续)相关的知识,希望对你有一定的参考价值。
参考技术A可以使用 [] 符号直接按位置进行索引,如果索引超过字符串的长度,结果将是 NaN
在 0.23 版本之前, extract 方法的参数 expand 默认为 False 。当 expand=False 时, expand 会根据正则表达式模式返回一个 Series 、 Index 或 DataFrame
当 expand=True 时,它总是返回一个 DataFrame ,这种方式更加符合用户的需求,从 0.23.0 版本开始就是默认的
extract 方法接受一个至少包含一个捕获组的正则表达式
如果是包含多个组的正则表达式将返回一个 DataFrame ,每个捕获组是一列
未匹配的行会填充 NaN ,可以从混乱的字符串序列中提取出有规则的信息。
对于命名分组
对于可选的分组
注意 :正则表达式中的任何捕获组名称都将用作列名,否则将使用捕获组号
如果 expand=True ,则返回一个 DataFrame
如果 expand=False ,则返回一个 Series
对于索引,如果 expand=True ,且只有一个捕获组则返回一个只有一列的 DataFrame
此时,如果 expand=False 将会返回一个 Index
对于索引,正则表达式设置多个分组将返回 DataFrame
如果 expand=False 将会抛出 ValueError 异常
对于 extract 只返回第一个匹配项
与 extract 不同, extractall 方法返回每个匹配项,其结果始终是具有 MultiIndex 的 DataFrame 。
MultiIndex 的最后一级名为 match ,标示的是匹配的顺序
对于只有一个匹配的 Series
extractall(pat).xs(0, level=\'match\') 与 extract(pat) 的结果一致
Index 也支持 .str.extractall ,它返回一个 DataFrame ,其结果与 Series.str 相同。
您可以检查字符串元素中是否包含正则匹配模式
或者字符串元素是否与模式匹配
而在 1.1.0 版本中
注意 :
match 、 fullmatch 和 contains 之间的区别是:
这三个函数于 re 模块的 re.fullmatch 、 re.match 和 re.search 对应
像 match , fullmatch , contains , startswith 和 endswith 有一个额外的 na 参数,用于将缺失值替换为 True 或 False
您可以从字符串列中提取指标变量。例如,如果使用 \'|\' 分隔的字符串
字符串 Index 也支持 get_dummies ,它返回一个 MultiIndex
python编程基础之三十六
文件处理:文件处理包括读文件,写文件
读文件:
1、打开文件
2、读取文件
3、关闭文件
写文件:
1、打开文件
2、写如文件
3、关闭文件
无论是读取文件还是写文件都时需要打开文件,和关闭文件
打开文件:
fp = open(file [, mode=‘r‘, encoding=None, errors=None])
mode:文件打开模式
只读 | |
w | 写之前会清空文件的内容 |
a | 追加的方式,在原本内容中继续写 |
r+ | 可读可写 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
b | rb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作 |
encodeing: 文件编码方式,不用于二进制文件,一般是utf-8,gbk
? errors:指定如何处理编码和解码错误 ,适用于文本文件
返回值:一个可迭代的文件对象一般用fp
读取文件常用函数:
read([size]) 读取文件(读取size字节,默认读取全部),
readline([size]) 读取一行,如果指定size,将读入指定的字符数,
readlines() 把文件内容按行全部读入,返回一个包含所有行的列表
1 #打开文件 2 fp = open(‘qfile.txt‘,‘r‘,encoding=‘utf-8‘) 3 4 #读取文件全部内容 5 #content = fp.read() 6 #print(content) 7 8 #读取指定字符数,包括行尾的换行符 9 # print(fp.read(20)) 10 11 #读取一行 12 # print(fp.readline(5)) #读取指定字符数 13 # print(fp.readline()) #读取一整行,直到碰到一个 14 15 #读取所有行,返回列表 16 # print(fp.readlines()) 17 18 #关闭文件 19 fp.close()
关闭文件 :fp.close
文件的指针移动:file_obj.seek(offset,whence=0),
第一个参数表示偏移量,必须是正数
官方文件里面说的第二个参数whence可以是0,1,2
0 表示开始文件开始位置,
1 表示当前位置
2 表示文件结尾
但是使用1,2的时候总是报错,还没找到解决办法
返回值是新的位置
1 #1.txt内容:hello world 2 with open(‘1.txt‘,‘r‘,encoding=‘utf-8‘) as fp: 3 fp.seek(5) #移动到hello后的空格位置 4 print(fp.read(3)) #wo 5 fp.seek(0) #移动到开头 6 print(fp.read(5)) #hello 7 print(fp.tell()) #tell()显示当前指针位置
文件操作还有csv操作,
1 import csv 2 with open(r‘csvwinequality-red.csv‘) as fp: #1.打开文件 3 #delimiter指定分隔符 4 csv_reader = csv.reader(fp,delimiter=‘;‘) #2.获取csv读取器 5 header = next(csv_reader) #获取第一行的标题 6 print(header) 7 for line in csv_reader: #3.遍历所有的行 8 print(line)
1 import csv 2 l1 = [[1,2,3],[4,5,6],[7,8,9]] 3 #打开文件时,要添加newline=‘‘参数,否则会多一个空行 4 with open(‘1.csv‘,‘w‘,newline=‘‘) as fp: #1.打开文件 5 #delimiter=‘ ‘指定数据分隔符 6 csv_writer = csv.writer(fp,delimiter=‘ ‘) #2.获取writer 7 for line in l1: 8 csv_writer.writerow(line) #3.写入文件
以上是关于Python 数据处理(三十六)—— 文本数据处理(续)的主要内容,如果未能解决你的问题,请参考以下文章
Python进阶(三十六)-Web框架Django项目搭建全过程