numpy.fromregex#
- numpy.fromregex(file, regexp, dtype, encoding=None)[源代码]#
从文本文件构造一个数组,使用正则表达式解析.
返回的数组总是一个结构化数组,并且是从文件中正则表达式的所有匹配项构建的.正则表达式中的组转换为结构化数组的字段.
- 参数:
- file文件, str, 或 pathlib.Path
要读取的文件名或文件对象.
在 1.22.0 版本发生变更: 现在接受
os.PathLike
实现.- regexpstr 或 regexp
用于解析文件的正则表达式.正则表达式中的组对应于 dtype 中的字段.
- dtypedtype 或 dtypes 的列表
结构化数组的dtype;必须是结构化数据类型.
- encodingstr, 可选
用于解码输入文件的编码.不适用于输入流.
在 1.14.0 版本加入.
- 返回:
- outputndarray
输出数组,包含 file 内容中被 regexp 匹配的部分.`output` 总是一个结构化数组.
- 引发:
- TypeError
当
dtype
不是结构化数组的有效 dtype 时.
参见
备注
结构化数组的dtypes可以通过几种形式指定,但所有形式至少指定数据类型和字段名称.详情请参见 basics.rec.
示例
>>> import numpy as np >>> from io import StringIO >>> text = StringIO("1312 foo\n1534 bar\n444 qux")
>>> regexp = r"(\d+)\s+(...)" # match [digits, whitespace, anything] >>> output = np.fromregex(text, regexp, ... [('num', np.int64), ('key', 'S3')]) >>> output array([(1312, b'foo'), (1534, b'bar'), ( 444, b'qux')], dtype=[('num', '<i8'), ('key', 'S3')]) >>> output['num'] array([1312, 1534, 444])