入力ファイルには 2 つの列があります。inputdata1.txt
2 番目の for ループ内で の 2番目の列を印刷しようとしています。しかし、私のコードは機能していません。誰かが私に何をすべきか教えてもらえますか?
質問する
56547 次
4 に答える
12
with open('inputdata1.txt') as inf:
for line in inf:
parts = line.split() # split line into parts
if len(parts) > 1: # if at least 2 parts/columns
print parts[1] # print column 2
これは、列が空白で区切られていることを前提としています。
関数split() では、さまざまなセパレータを指定できます。たとえば、列がカンマで区切られている場合、上記のコードで,
使用します。line.split(',')
注: を使用with
してファイルを開くと、作業が完了したとき、または例外が発生した場合に、ファイルが自動的に閉じられます。
于 2012-06-20T01:23:09.887 に答える
8
このようなことができます。Separator
タブやカンマなど、ファイルが列を区切るために使用する文字です。
for line in open("inputfile.txt"):
columns = line.split(separator)
if len(columns) >= 2:
print columns[1]
于 2012-06-20T01:22:36.920 に答える
5
クイックンダーティ
AWK がインストールされている場合:
# $2 for the second column
os.system("awk '{print $2}' inputdata1.txt")
クラスの使用
クラスを作成します。
class getCol:
matrix = []
def __init__(self, file, delim=" "):
with open(file, 'rU') as f:
getCol.matrix = [filter(None, l.split(delim)) for l in f]
def __getitem__ (self, key):
column = []
for row in getCol.matrix:
try:
column.append(row[key])
except IndexError:
# pass
column.append("")
return column
次inputdata1.txt
のようになります。
こんにちは世界 世界こんにちは
あなたはこれを得るでしょう:
print getCol('inputdata1.txt')[1]
#['lo', 'ld']
その他の注意事項
pyawk
より多くの awk 機能に使用できます- Quick 'n dirtyメソッドを使用している場合
subprocess.Popen
- 区切り文字を変更できます
getCol('inputdata1.txt', delim=", ")
filter
空の値を削除するか、コメントを解除するために使用しますpass
于 2015-04-02T09:30:31.430 に答える