【问题标题】:Python remove data from a list to add into a new listPython 从列表中删除数据以添加到新列表中
【发布时间】:2013-03-28 21:13:48
【问题描述】:

问题:如何从列表中删除第一个单词以添加到名为 car_list 的新列表中,并保留其余单词以添加到另一个列表 other_list

other_list 中,我将其余部分放入字典中

例如,当我读取文件时,我会得到类似

的内容

data_file = ['1911 Overland OctoAuto', '1913 Scripps-Booth Bi-Autogo','1920 Briggs and Stratton Flyer'

car_list = [] other_list = []

我如何得到如下结果

car_list = [Overland, Scripps-Booth, Briggs]

other_list = [1911,OctoAuto, 1913, Bi-Autogo, 1920, and Stratton flyer]

这就是我所拥有的

data_file = open("facts.txt", 'r')


def clean_list(data_file):
    new_list =[]
    clean_list =[]
    car_list = []
    other_list = []
    D = {}
    for i in data_file:
        new_list = data_file.split('\n') #change split by new line or word

    clean_list = [(x.strip(' ')) for x in new_list]
    car_list = (clean_list.strip().split(' ')[2:], ' ') 
    other_list = dict(zip(keys, values))# Just an example
    return car_list

car_list = clean_list(data_file)

我以为car_list = (clean_list.strip().split(' ')[2:], ' ')

可以,但我收到以下错误。

car_list = (clean_list.lstrip().split(' ')[2:], ' ')

AttributeError: 'list' object has no attribute 'split'

AttributeError: 'list' object has no attribute 'lstrip'

我认为拼接会起作用,但没有骰子。`

我尝试了car_list = clean_list.split(' ',2)[2] 并没有打印任何内容

有什么想法吗?我知道文件正在被读取,但我只是不知道在这里做什么。

【问题讨论】:

    标签: python list word add


    【解决方案1】:

    我对您的警告是,other_list 看起来像是不同类型数据的混合体。这通常是不明智的。有了这个免责声明,这里是一个尝试:

    data_file = ['1911 Overland OctoAuto', 
                 '1913 Scripps-Booth Bi-Autogo',
                 '1920 Briggs and Stratton Flyer']
    
    car_list = []
    other_list = []
    for entry in data_file:
        year, make, model = entry.split(' ',2)
        car_list.append(make)
        other_list.append(year)
        other_list.append(model)
    
    print car_list
    >>>> ['Overland', 'Scripps-Booth', 'Briggs']
    print other_list
    >>>> ['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
    

    【讨论】:

      【解决方案2】:

      最终你也可以使用正则表达式来分割字符串。

      import re
      data_file = ['1911 Overland OctoAuto', 
                   '1913 Scripps-Booth Bi-Autogo',
                   '1920 Briggs and Stratton Flyer']
      
      car_list = []
      other_list = []
      delimiter_space = re.compile(' ')
      for entry in data_file:
          year, make, model = delimiter_space.split(entry,maxsplit=2)
          car_list.append(make)
          other_list.append(year)
          other_list.append(model)
      
      print car_list
      >>>> ['Overland', 'Scripps-Booth', 'Briggs']
      print other_list
      >>>> ['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
      

      【讨论】:

      • 非常感谢您的指导。
      【解决方案3】:
      T = [x.split(' ', 2) for x in data_file]
      car_list = [ x[1] for x in T]
      other_list =  [ v for x in T for v in x if v != x[1]]
      print car_list
      print other_list
      

      输出

      ['Overland', 'Scripps-Booth', 'Briggs']
      ['1911', 'OctoAuto', '1913', 'Bi-Autogo', '1920', 'and Stratton Flyer']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-24
        • 1970-01-01
        • 2023-01-20
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        相关资源
        最近更新 更多