2013-08-19 56 views
1

我是一個初學者py。從文本文件中提取一列 - Python

我需要在Python腳本中每次在文本文件中找到某個單詞(類似於Bash中的awk '{print $12}')時,從巨大的平面文本文件中提取第12列的內容。

到目前爲止,我有(例如,不是真正的代碼):

word = a_word 
for a_word in data: 
    column12 = data.split() 
    print(column12[11]) 

我認爲我應該從0開始計數而不是1,雖然我非常好可能是不正確的。

此外,是一個for循環正確的這種類型的代碼?

謝謝!

+2

什麼格式的數據?你可以發佈一行或兩個示例數據嗎? –

回答

6

循環在打開的文件對象:

with open('somefile') as infile: 
    for line in infile: 
     print(line.split()[11]) 

所以,是的,使用for循環和使用基於0的索引。

+0

如果我們需要拆分2列?我試過'print(line.split()[1] [2])'它說'print(line.split()[0] [1]) IndexError:字符串索引超出範圍' – 2014-09-01 15:22:23

+1

@SitzBlogz:'str .split()'返回一個列表對象。如果你需要兩列,然後將'line.split()'的輸出分配給一個變量,並從列表中選出你想要的兩個元素。 –

1

如果列分隔符與文本文件(即空格或逗號)分隔值,你可能想看看Python的CSV模塊:http://docs.python.org/2/library/csv.html

+1

csv文件中的字段可以用逗號以外的分隔符分隔,所以這不是必需的。所以,我同意使用它應該被考慮。 – martineau

+0

非常好的一點,我會編輯我的答案,使其明確。 –