2017-06-13 27 views
0

我是新來的蟒蛇,我想清理和從python3 格式化列表:文本文件清理,格式和對齊

[['', '\xa0', '', ''], ['First Standard', 'First Flex', 'Business 
Standard','Business Flex', 'Economy standard', 'Economy Flex', 'Economy 
Saver', 'Economy Superdeal'], ['Class', 'P/F', 'A', 'C/D', ' Z/J', 'W/Y/B/M 
', 'H/K/L', 'Q/G/V/E', 'S/T/U/N'], ['Change Fee\nIn']] 

['First Standard', 'First Flex', 'Business Standard', 'Business Flex', 
'Economy standard', 'Economy Flex', 'Economy Saver', 'Economy Superdeal'], 
['Class','P/F', 'A', 'C/D', ' Z/J', 'W/Y/B/M ', 'H/K/L', 'Q/G/V/E', 
'S/T/U/N'] 
+0

通過4個空格縮進代碼行來將它們格式化爲更好的StackOverflow。另外,https://stackoverflow.com/help/how-to-ask –

+0

好的,我會這樣做 – Ade

+0

這兩個不是相同的列表,後者甚至是無效的語法。 – zwer

回答

0

這裏有一個不特別乾淨,但不言自明的方式:

old = [['', '\xa0', '', ''], ['First Standard', 'First Flex', 'Business Standard', 'Business Flex', 'Economy standard', 'Economy Flex', 'Economy Saver', 'Economy Superdeal'], ['Class', 'P/F', 'A', 'C/D', ' Z/J', 'W/Y/B/M ', 'H/K/L', 'Q/G/V/E', 'S/T/U/N'], ['Change Fee\nIn']] 

new = [] 
for old_element in old: 
    new_element = [] 

    for string in old_element: 
     stripped = string.strip() 

     if stripped: 
      new_element.append(stripped) 

    if new_element: 
     new.append(new_element) 

print new 

編輯:

仍然在等待更好地解釋問題,但是如果您只想刪除第一個和最後一個元素,您可以按照@salparadise的說法進行操作,否則就像下面的操作一樣,這會更加通用一些:

old = [['', '\xa0', '', ''], ['First Standard', 'First Flex', 'Business Standard', 'Business Flex', 'Economy standard', 'Economy Flex', 'Economy Saver', 'Economy Superdeal'], ['Class', 'P/F', 'A', 'C/D', ' Z/J', 'W/Y/B/M ', 'H/K/L', 'Q/G/V/E', 'S/T/U/N'], ['Change Fee\nIn']] 

# 1 means the second element of the list, because 0 is the first. 
# -1 means "one element back from the end of the list". 
new = old[1:-1] 
+0

剛剛意識到我的版本離開了最後一個元素,而他所需的版本卻沒有。不確定他到底想要什麼,所以我會等待編輯,直到他更新他的問題。 –

+0

你的版本可以工作,但我想刪除你說的最後一個元素。謝謝 – Ade

+0

@Ade你能解釋一下你的元素被移除的標準嗎?請編輯您的問題,以解釋您對「清理」列表意味着什麼。 –

0

假設你希望兩個單獨的列表,你的第一個列表是:

[['', '\xa0', '', ''], 
['First Standard', 
    'First Flex', 
    'Business Standard', 
    'Business Flex', 
    'Economy standard', 
    'Economy Flex', 
    'Economy Saver', 
    'Economy Superdeal'], 
['Class', 
    'P/F', 
    'A', 
    'C/D', 
    ' Z/J', 
    'W/Y/B/M ', 
    'H/K/L', 
    'Q/G/V/E', 
    'S/T/U/N'], 
['Change Fee\nIn']] 

您可以使用Python的拆包魔術只獲取內部列表並轉存到兩個不同的列表:

_, first, second, _ = bad_formatted_list 

In [149]: first, second 
Out[149]: 
(['First Standard', 
    'First Flex', 
    'Business Standard', 
    'Business Flex', 
    'Economy standard', 
    'Economy Flex', 
    'Economy Saver', 
    'Economy Superdeal'], 
['Class', 
    'P/F', 
    'A', 
    'C/D', 
    ' Z/J', 
    'W/Y/B/M ', 
    'H/K/L', 
    'Q/G/V/E', 
    'S/T/U/N'])