使用 Python 从文本文件的列中提取数据
Extracting data from columns in text file using Python
我正在尝试从文本文件的列中提取数据。其中一列有一个 header,我还需要用 header 的重复条目提取整列,即:
col1 col2 col3
1 1 1
2 2 2
3 3 3
进入:
col1 col2 col3 col3
1 1 1 col3
2 2 2 col3
3 3 3 col3
我正在努力隔离 header。
for line in my_file:
line = line.split("\t")
column = line[0:3] #col1-3
如何从 col3 中获取 header 然后重复?我必须先用 "\n"
分割线,然后再用 "\t"
分割线吗?
我尝试这样做但收到错误消息?
您可以使用 Python 的 CSV
模块,如下所示。这可以自动为您处理所有列的拆分。默认情况下,它假定列以逗号分隔,但可以通过指定要使用的分隔符将其切换为制表符:
import csv
with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
csv_input = csv.reader(f_input, delimiter='\t')
csv_output = csv.writer(f_output, delimiter='\t')
header = next(csv_input)
csv_output.writerow(header + [header[-1]])
for cols in csv_input:
print cols
csv_output.writerow(cols + [header[-1]])
对于给定的输入,您将得到以下输出(列以制表符分隔):
col1 col2 col3 col3
1 1 1 col3
2 2 2 col3
3 3 3 col3
使用 Python 2.7.9
测试
为什么不用 pandas.
import pandas as pd
df = pd.read_csv("filename.tsv",sep="\t")
为了得到列 header 你也可以使用
df.ix[:,2:]
with open('/home/prashant/Desktop/data.txt') as f:
for l in f:
print l.strip( ).split("\n")
这可能会解决您的问题我得到的结果是
[col1 col2 col3]
[1 1 1]
[2 2 2]
[3 3 3]
我正在尝试从文本文件的列中提取数据。其中一列有一个 header,我还需要用 header 的重复条目提取整列,即:
col1 col2 col3
1 1 1
2 2 2
3 3 3
进入:
col1 col2 col3 col3
1 1 1 col3
2 2 2 col3
3 3 3 col3
我正在努力隔离 header。
for line in my_file:
line = line.split("\t")
column = line[0:3] #col1-3
如何从 col3 中获取 header 然后重复?我必须先用 "\n"
分割线,然后再用 "\t"
分割线吗?
我尝试这样做但收到错误消息?
您可以使用 Python 的 CSV
模块,如下所示。这可以自动为您处理所有列的拆分。默认情况下,它假定列以逗号分隔,但可以通过指定要使用的分隔符将其切换为制表符:
import csv
with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
csv_input = csv.reader(f_input, delimiter='\t')
csv_output = csv.writer(f_output, delimiter='\t')
header = next(csv_input)
csv_output.writerow(header + [header[-1]])
for cols in csv_input:
print cols
csv_output.writerow(cols + [header[-1]])
对于给定的输入,您将得到以下输出(列以制表符分隔):
col1 col2 col3 col3
1 1 1 col3
2 2 2 col3
3 3 3 col3
使用 Python 2.7.9
测试为什么不用 pandas.
import pandas as pd
df = pd.read_csv("filename.tsv",sep="\t")
为了得到列 header 你也可以使用
df.ix[:,2:]
with open('/home/prashant/Desktop/data.txt') as f:
for l in f:
print l.strip( ).split("\n")
这可能会解决您的问题我得到的结果是
[col1 col2 col3]
[1 1 1]
[2 2 2]
[3 3 3]