Python:打印没有括号和单引号的列表?

时间:2011-04-21 21:36:20

标签: python list printing loops

我有一个充满IP地址的列表。我想遍历列表并打印每个IP地址。当我尝试这样做时:

def printList(theList):
    for item in theList:
        print item

输出如下:

['8.0.226.5']
['8.0.247.5']
['8.0.247.71']
['8.0.249.28']
['8.0.249.29']

我已尝试过所有内容,包括循环中的“print item [0]”。我做错了什么?

2 个答案:

答案 0 :(得分:6)

列表中的每个项目本身都是一个单例列表。可能没有理由这样做 - 如果你不能命名一个,那么去除它们(使用re.find超过re.findall或从re.findall返回的列表中返回一个项目),它们只是多余的,在这种情况下会造成麻烦。

无论如何,print item[0]应该在打印列表中的单个元素时起作用,与列表的str()不同,它不会首先通过repr运行项目(这会导致引号,如果字符串中有任何字符,将转义不可打印的字符)。一旦你摆脱了多余的单例列表,print '\n'.join(items)也会起作用。

如果theList中有空列表,则代码会引发错误。如果recentFile中的某行不包含任何格式化为IP的行,则returnIP将返回一个空列表,如果comparisonFile中有任何行(顺便说一下:你)在开头使用描述性名称打开它,但在chechMatch中没有描述性名称的情况下一次又一次地打开它)也不包含IP地址,你将得到另一个空列表,当然等于作为参数传递的空列表ip。因此,对于recentFile中的非IP名称,将添加空列表。如果您从returnIP返回字符串而不是单个列表,则可以避免整个麻烦;当前行中没有IP时使用None,如果compareFiles中没有IP,则跳过检查/追加returnIP会返回None

答案 1 :(得分:0)

我认为 theList 不是IP列表,而是IP列表列表(每个列表包含1个元素)。

问题的另一个原因是你有一个带有覆盖的 str 方法的IP类,它会像那样打印出来。