Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用正则表达式提取文件的一列_Python_Regex - Fatal编程技术网

Python:使用正则表达式提取文件的一列

Python:使用正则表达式提取文件的一列,python,regex,Python,Regex,我目前正在使用操作系统中的awk提取文件中的列: os.system("awk '{print $'%i'}' < infile > outfile"%some_column) np.loadtxt('outfile') 有没有一种使用正则表达式实现这一点的等效方法 谢谢 编辑:我想澄清一下,我正在寻找提取大型文件特定列的最佳方法 根据您的数据分隔符是什么,regex在这方面可能有些过分。如果分隔符是简单的空白或特定的字符/字符串,则可以使用分隔符分隔列 下面是一个示例程序来解释这

我目前正在使用操作系统中的awk提取文件中的列:

os.system("awk '{print $'%i'}' < infile > outfile"%some_column)
np.loadtxt('outfile')
有没有一种使用正则表达式实现这一点的等效方法

谢谢


编辑:我想澄清一下,我正在寻找提取大型文件特定列的最佳方法

根据您的数据分隔符是什么,regex在这方面可能有些过分。如果分隔符是简单的空白或特定的字符/字符串,则可以使用分隔符分隔列

下面是一个示例程序来解释这可能的工作原理:

列=0第一列 以opendata.txt作为文件: data=file.readlines columns=listmaplambda x:x.strip.split[column],数据 要分解这一点:

列=0 将名为data.txt的文件读入行数组 以opendata.txt作为文件: data=file.readlines 这是我们提取列时存储列的位置 列=[] 迭代文件中的每一行 对于行输入数据: 将包含尾随换行符的空格从 字符串的开始和结束 line=line.strip 使用任意数量的标准分隔符拆分行 空白字符 line=line.split 从所需索引中提取列数据并将其存储在列表中 columns.appendline[列] columns现在保存从该列提取的字符串列表
如果您使用csv,请使用csv库。您可以做一些简单的事情,如。在选择列之前和之后添加更多逗号。如果你有一个大文件,你可能只想使用csv模块。对于csv,你也可以使用pandas的csv_读取和loc功能。但是,这对大文件来说不是效率较低吗?如果你可能操作大文件,一次读取整个文件的确是个坏主意。我将您的问题解释为如何提取列,而不是如何以最佳方式读取文件,所以这就是我的示例代码要展示的内容。如果我正在编写一个完整的程序,我也不会硬编码列索引或数据文件路径。