2017-07-13 45 views
-2

我有這樣的名單:Python:有沒有更簡單的方法來做到這一點?字符串的某些文本

comment = ['Item Location: AUMEL222\nLintu Testi: C:\\SSD\\important\\text.txt\nLintu Connection: 123\nItem Version: ABC.123.ABC\nItem Serial: 1234ABCD\nItem Configuration ID: ABCD1234'] 

我需要從這裏提取的某些項目。我已經做到了,但是一定有更簡單的方法來做到這一點。我的代碼如下所示:

key = "Item Location" 
key_found = False 
for line in comment: 
    if key_found: 
     get_value(line)  #converts the big list to more readable state. 
line2 = line 
teststat = "" 
FW = "" 
print(line2) 
for item in line2.split("\n"): 
     if "Item Location" in item: 
       Teststat = (item.strip()) 
     if "Item Version" in item: 
       FW = (item.strip()) 
print(Teststat) 
print(FW) 

輸出:

Item Location : AUMEL222 
Item Version : ABC.123.ABC 

所以抓住幾個從字符串值通緝。 主要目標是隻打印價值。不是關鍵。但它是可以做到的:

print(Teststat.replace("Item Location: ", "")) 
+0

我真的不明白它。請告訴我什麼是輸入,你想要輸出什麼。 – Rahul

+0

輸入是列表「評論」和想要的輸出是相同的輸出,但代碼更簡單。 –

回答

0

你可能想要這樣的東西;

comment = ['Item Location: AUMEL222\n' 
      'Lintu Testi: C:\\SSD\\important\\text.txt\n' 
      'Lintu Connection: 123\n' 
      'Item Version: ABC.123.ABC\n' 
      'Item Serial: 1234ABCD\n' 
      'Item Configuration ID: ABCD1234'] 
comment = comment[0] 

for key_value_pair in [key_value_pair.split(':') 
         for key_value_pair in comment.split('\n')]: 
    print(':\t'.join(key_value_pair)) 

請注意,我只是把部分的字符串列表內新上線的可讀性,這並沒有作出任何改變的comment值。


輸出:

Item Location: AUMEL222 
Lintu Testi:  C: \SSD\important\text.txt 
Lintu Connection: 123 
Item Version: ABC.123.ABC 
Item Serial:  1234ABCD 
Item Configuration ID: ABCD1234 
+0

與: print(key_value_pair [1]) 正是我所期待的。謝謝 –

1

嘗試使用item.split(':')[1]而不是item.strip()

+0

並不真正使它更短或更簡單 –

+0

@EemilAhonen,但這是它將工作的唯一方法 – Rahul

+0

如果你想縮短它,你可以用're'包來嘗試正則表達式,但我認爲這是一個很難辦法。 –

3

正則表達式往往矯枉過正,但他們是一個很好的匹配(雙關語瘸子,對不起)位置:

import re 
for line in comments: 
    found = re.findall(r"(^Item Location|Item Version): (.+?)$", line, re.MULTILINE) 
    if found: 
     print(found) 
     # if you only want the values: 
     print("\n".join(v for k, v in found)) 
     # if you want it as a dict for future use 
     found = dict(found) 
     print(found) 
     # etc 
+0

作品,謝謝。真正的跛子。但隨着湯姆的答案 –

0
comment = ['Item Location: AUMEL222\nLintu Testi: C:\\SSD\\important\\text.txt\nLintu Connection: 123\nItem Version: ABC.123.ABC\nItem Serial: 1234ABCD\nItem Configuration ID: ABCD1234'] 
key = 'Item Location' 

#split with \n 
commentSplit = comment[0].split('\n') 
commentSplit2 = [] 

#split with ':' 
for i in commentSplit: 
    commentSplit2.append(i.split(':')) 

#value for key 
for i in commentSplit2: 
if i[0] == key: 
    print i[1] 
相關問題