2015-02-09 5 views
0

Я пытаюсь удалить значение второго столбца, если значение первого столбца сопоставлено, то есть если какое-либо значение в первом столбце имеет значение «Браун» " в этом. Ну, мой код на Python был недостаточно хорош, чтобы выполнить эту работу.Удалить значение второго столбца, если сопоставляется значение первого столбца

Мои данные FileX:

Brown_256 good 
Sure_278 uncertain 
Brown_278 uncertain 
Gorino_289 good 
Tempar_290 good 

Ожидаемый результат: FileY:

Brown_256 
Sure_278 uncertain 
Brown_278 
Gorino_289 good 
Tempar_290 good 

Моя попытка:

infile=open("fileX.txt", "r") 
outfile=open("fileY.txt", "w") 
for item in infile: 
    item=str(item).split("\t") 
    #item=item.strip() 
    #print item[1] 
    if item[0].startswith("Brown_"): 
     print item[1] 
     item=item.replace("item[1]","") 
     outfile.write(item+"\t") 

Может кто-то дайте мне знать, почему мой код не работает, как ожидалось , Спасибо

ответ

1

Я мог бы написать свой код, например, так:

for line in infile: 
    if line.startswith('Brown'): 
     left, sep, right=line.partition('\t') 
     outstr=''.join([left, sep])+'\n' 
    else: 
     outstr=line 
    outfile.write(outstr) 

(не тестировалось ...)

+0

Спасибо @dawd. Отличное решение! – user27976

+0

Это имеет завершающий '\ t' в случае одного столбца. Обычно это считается ошибкой – dawg

0

В списках нет метода replace, и вы не можете использовать строки ("item[1]") в качестве фактических значений (item[1]).

Изменить item=item.replace("item[1]","")item[1]="".

+0

спасибо за ваше предложение @StenSoft – user27976

Смежные вопросы