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])

  file:文件路径,可以是相对路径和绝对路径

  mode:文件打开模式

 

r 只读
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(rcsvwinequality-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)
csv读取
技术分享图片
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.写入文件
csv写入

 

以上是关于Python 数据处理(三十六)—— 文本数据处理(续)的主要内容,如果未能解决你的问题,请参考以下文章

第三十六课文本编辑器中的功能交互

python编程基础之三十六

Python进阶(三十六)-Web框架Django项目搭建全过程

[Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解

python学习 (三十六) wxpython

笨办法学Python(三十六)