2017-10-20 104 views
0

嗨我想從我的列表中刪除strip換行符並獲取每個元素的第三個單詞。我正在使用split和rstrip。這是我的代碼:Python rstrip和split

# obtain just compound ids from list 
just_compound_id = [] 
for line in final_list: 
    split_file = line.split(' ') 
    split_file = line.rstrip() 
    just_compound_id.append(split_file[2]) 
    print(just_compound_id) 

,但我得到一個非常奇怪的輸出,這樣的事情

['I'] 
['I', 'I'] 
['I', 'I', 'I'] 
['I', 'I', 'I', 'I'] 
['I', 'I', 'I', 'I', 'I'] 

**編輯

這是我輸入

['UNIQUE-ID - ASN\n', 'UNIQUE-ID - D-GLT\n', 'UNIQUE-ID - 4-AMINO- 
BUTYRATE\n', 'UNIQUE-ID - CPD-8569\n', 'UNIQUE-ID - CPD-17095\n', 'UNIQUE-ID 
- CPD-17880\n', 'UNIQUE-ID - GLY\n', 'UNIQUE-ID - CPD-18298\n', 'UNIQUE-ID - 
D-SERINE\n', 'UNIQUE-ID - ACETYLCHOLINE\n', 'UNIQUE-ID - DOPAMINE\n', 
'UNIQUE-ID - SEROTONIN\n', 'UNIQUE-ID - HISTAMINE\n', 'UNIQUE-ID - 
PHENYLETHYLAMINE\n', 'UNIQUE-ID - TYRAMINE\n', 'UNIQUE-ID - CPD-58\n', 
'UNIQUE-ID - 1-4-HYDROXYPHENYL-2-METHYLAMINOETHAN\n', 'UNIQUE-ID - 
TRYPTAMINE\n'] 
+3

請給出您的輸入示例。此外,分裂之前,rstrip()。 –

+1

你真的想重寫'split_file'嗎? :) –

+0

所以,我改變了順序(順便說一句,爲什麼strip之前必須分裂?)。但我仍然沒有從列表中刪除\ n – StudentOIST

回答

1

它應該是split_file.split(' ')而不是line.split(' '),並且您還需要執行line.rstrip()脫穎而出split_file.split(' ')

just_compound_id = [] 
for line in final_list: 
    split_file = line.rstrip() 
    split_file = split_file.split(' ') 
    just_compound_id.append(split_file[2]) 
    print(just_compound_id) 

你有它目前的方式,第一分配split_file有沒有影響,因爲你不使用它,你覆蓋它的下一個任務。

-1

輸出錯誤,因爲每個輸入的字符串的第三個字符是I

你想讓角色在中間,對吧?

所以使用這個代碼,而不是

# obtain just compound ids from list 
just_compound_id = [] 
for line in final_list: 
    split_file = line.rstrip() 
    split_file = line.split(' ') 
    just_compound_id.append(split_file[len(split_file)/2]) # EDIT HERE 

print(just_compound_id) 
+0

使用你的代碼,我得到了以下反饋不支持的操作數類型(s),用於/:'str'和'int'。另外我不想得到中間字符,但最後一個字(例如列表中的第一個元素,我想獲得ASN) – StudentOIST

+0

@smvpfm謝謝。我做了一個編輯。 –

0

您可以使用列表理解:

[e.rstrip().split('-')[2] for e in finallist] 
+0

@smvpfm你想要什麼? –

0

另一種選擇是正則表達式,如果你有更復雜的輸入。對於上面的情況,我建議使用-分割線,並設置maxsplit參數。

final_list = ['UNIQUE-ID - ASN\n', 'UNIQUE-ID - D-GLT\n', 'UNIQUE-ID - 4-AMINO-BUTYRATE\n', 'UNIQUE-ID - CPD-8569\n', 'UNIQUE-ID - CPD-17095\n', 'UNIQUE-ID - CPD-17880\n', 'UNIQUE-ID - GLY\n', 'UNIQUE-ID - CPD-18298\n', 'UNIQUE-ID - D-SERINE\n', 'UNIQUE-ID - ACETYLCHOLINE\n', 
       'UNIQUE-ID - DOPAMINE\n', 'UNIQUE-ID - SEROTONIN\n', 'UNIQUE-ID - HISTAMINE\n', 'UNIQUE-ID - PHENYLETHYLAMINE\n', 'UNIQUE-ID - TYRAMINE\n', 'UNIQUE-ID - CPD-58\n', 'UNIQUE-ID - 1-4-HYDROXYPHENYL-2-METHYLAMINOETHAN\n', 'UNIQUE-ID - TRYPTAMINE\n'] 
just_compound_id = [] 
for line in final_list: 
    line = line.rstrip() 
    split_id = line.split('-', 2)[2].strip() 
    just_compound_id.append(split_id) 
print(just_compound_id)