我有一個數據集,其行和列保存爲製表符分隔的文本格式。我想根據column [x]是否有一定的值將這個數據集分成兩個較小的數據集。根據特定的列值將數據集分成兩組行[python,unix]
這裏是數據集的示例(沒有報頭):dataset.txt
test1 abc 1
test2 efg 2
test3 hdh 1
test4 xyz 24
預期的產出應該是這樣的:dataset1.txt
test1 abc 1
test3 hdh 1
dataset2.txt
test2 efg 2
test4 xyz 24
我想用import sys來實現這一點,以便我可以輸入原始文件名l數據集作爲unix命令並指定我想要的輸出選項。在這種情況下,我將定義一個名爲「unique」的選項來輸出dataset1.txt,並定義一個選項「multi」來輸出dataset2.txt。命令行應該如下所示:
python code.py [option] [filename] > [output]
例如,
python code.py unique dataset.txt > dataset1.txt
python code.py multi dataset.txt > dataset2.txt
這裏是我寫的代碼:
import sys
option = sys.argv[1]
filename = sys.argv[2]
options = ['unique','multi']
def out_unique(data):
for row in data:
if column[2] == 1:
print row
def out_multi(data):
for row in data:
if column[2] != 1:
print row
if option == 'unique':
out_unique(filename)
elif option == 'multi':
out_multi(filename)
else:
print 'available options:', options
這裏是我的錯誤:
Traceback (most recent call last):
File "out_if_col.py", line 23, in <module>
out_unique(filename)
File "out_if_col.py", line 13, in out_unique
if column[3] == 1:
NameError: global name 'column' is not defined
我知道這可能看起來很可笑的專家那裏,但這是我第一次嘗試在python中完成某些事情。說實話,我花了相當多的時間來編寫上面的代碼,並且如果有人指出我錯了什麼,我會很感激。
非常感謝!它現在正在工作!你知道我如何擺脫出現在每個輸出行之間的空行嗎?值得爲此做一個新線程嗎? – biohazard
噢,我無法弄清楚第一個代碼,但是我可以通過在第二個代碼中用''替換'\ n'來輕鬆擺脫空行。謝謝 :) – biohazard