【问题标题】:Dividing a text file into 2 lists using python使用python将文本文件分成2个列表
【发布时间】:2015-05-20 23:49:24
【问题描述】:

我有一个包含 IP 地址和端口列表的文本文件,它的组织方式如下:

IP Port

例如:

212.212.212.212 80
111.111.111.111 8080

我已经使用'open'函数用python打开了文件并使用了readlines(),我得到的是:

['xxx.xxx.xxx.xxx xxx\n','yyy.yyy.yyy.yyy yyy\n'...]

我如何将它分成 2 个 python 列表,其中一个将包含 IP,另一个将包含端口?

感谢您的回答!

【问题讨论】:

    标签: python list ip iteration


    【解决方案1】:

    您可以使用generator-expressionszip 内置函数实现此目的。

    data = ['212.212.212.212 80\n','111.111.111.111 8080\n']
    result = zip(*((i.split()[0],i.split()[1]) for i in data))
    print result[0], result[1]
    

    产量:

    ('212.212.212.212', '111.111.111.111') ('80', '8080')
    

    【讨论】:

    • 得到一个错误,数据超出了这次尝试的范围
    • 你的名单有多长? len(f.readlines())。你能在这里包含回溯吗
    • 下面的答案对我来说更简单。感谢您提供帮助。
    【解决方案2】:

    简单使用split()

    l=[]
    y=[]
    for x in f.readlines():
        l.append(x.split()[0])   #list of ip addresses
        y.append(x.split()[1])   #list of ports
    

    编辑:

    x=['xxx.xxx.xxx.xxx xxx\n','yyy.yyy.yyy.yyy yyy\n']
    l=[]
    
    for i in x:
        l.append(i.split()[1])
    print l
    

    【讨论】:

    • 这给了我一个空列表..项目没有附加
    【解决方案3】:
    ips = []
    ports = []
    f = file('datafile.txt')
    for line in f.readlines():
        ip,port = line.strip().split()
        ips.append(ip)
        ports.append(port)
    f.close()
    

    【讨论】:

      【解决方案4】:

      你可以使用split()

      ipList = []
      portList = []
      F = open('inp.txt','r')
      for line in F:
          ip, port = line.split()
          ipList.append(ip)
          portList.append(port)
      

      【讨论】:

        猜你喜欢
        • 2021-04-30
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        • 1970-01-01
        • 2016-06-25
        相关资源
        最近更新 更多