2017-06-13 33 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'])