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

2024-10-01 15:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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]”。我做错什么了?


Tags: in列表fordefitemprintprintlistthelist
2条回答

我认为列表不是IP列表,而是IP列表(每个列表都有一个元素)。

问题的另一个原因是,您有一个IP类,该类有一个overwritenstr方法,可以这样打印它。

列表中的每个项本身都是一个单例列表。这显然是没有理由的——如果你不能命名一个,去删除它们(通过在re.findall上使用re.find,或者从re.findall返回的列表中返回一个条目),它们只是多余的,并且会像本例中那样引起麻烦。

不管怎样,print item[0]应该在打印列表中的单个元素时工作,并且与列表中的str()不同,它不会首先通过repr运行项(这会导致引号,如果字符串中有任何字符,则会转义不可打印字符)。一旦去掉了多余的单例列表,print '\n'.join(items)也能工作。

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

相关问题 更多 >

    热门问题