【问题标题】:How to distribute comma separated element to form a list in python如何在python中分配逗号分隔的元素以形成一个列表
【发布时间】:2020-05-07 05:56:58
【问题描述】:

如何提取/拆分多行注释以创建新列表

clientInfo="""James,Jose,664 New Avenue,New Orleans,Orleans,LA,8/27/200,123,jjose@gmail.com,;
  Shenna,Laureles, 288 Livinghood Heights,Brighton,Livingston,MI,2/19/75,laureles9219@yahoo.com,;
  """
 into this kind of list

 f_name = ["james","sheena"]
 l_name = ["jose","Laureles"]
 strt = ["664 New Avenue","288 Livinghood Heights"]
 cty = ["New Orleans","Brighton"]
 state = ["New Orleans","Livingston"]

【问题讨论】:

    标签: python string list split multiline


    【解决方案1】:

    如果顺序始终相同。你可以做这样的事情;

    f_name = []
    l_name = []
    strt = []
    cty = []
    state = []
    for client in clientData.split(";\n "):
        client_ = client.split(",")
        f_name.append(client_[0])
        l_name.append(client_[1])
        strt.append(client_[2])
        cty.append(client_[3])
        state.append(client_[4])
    

    我可以添加一些异常处理来处理字符串末尾的;,但是,把它留给你。

    【讨论】:

      【解决方案2】:

      您可以使用splitzip

      def extract(string):
        lines = string.split(";")
        split_lines = tuple(map(lambda line: line.split(","), lines))
        no_space1 = tuple(map(lambda item: item.strip(), split_lines[0]))
        no_space2 = tuple(map(lambda item: item.strip(), split_lines[1]))
        return list(zip(no_space1, no_space2))
      

      这会产生

      [('James', 'Shenna'), ('Jose', 'Laureles'), ('664 New Avenue', '288 Livinghood Heights'), ('New Orleans', 'Brighton'), ('Orleans', 'Living
      ston'), ('LA', 'MI'), ('8/27/200', '2/19/75'), ('123', 'laureles9219@yahoo.com'), ('jjose@gmail.com', '')]
      

      它最后有一些你没有要求的元组,但它相对较好。 no_space 1 和 2 行有点重复,但我认为将它们塞进一行更糟糕。

      【讨论】:

        【解决方案3】:

        你可以试试:

        clientData = """James,Jose,664 New Avenue,New Orleans,Orleans,LA,8/27/200,123,jjose@gmail.com,;
          Shenna,Laureles, 288 Livinghood Heights,Brighton,Livingston,MI,2/19/75,laureles9219@yahoo.com,;
          """
        data = clientData.split(";\n")
        
        f_name = []
        l_name = []
        strt = []
        cty = []
        state = []
        
        for data_line in data:
            data_line = data_line.strip()
            if len(data_line) >= 5:
                line_info = data_line.split(",")
                f_name.append(line_info[0].strip())
                l_name.append(line_info[1].strip())
                strt.append(line_info[2].strip())
                cty.append(line_info[3].strip())
                state.append(line_info[4].strip())
        
        print(f_name)
        print(l_name)
        print(strt)
        print(cty)
        print(state)
        

        输出:

        ['James', 'Shenna']
        ['Jose', 'Laureles']
        ['664 New Avenue', '288 Livinghood Heights']
        ['New Orleans', 'Brighton']
        ['Orleans', 'Livingston']
        

        【讨论】:

        • 我收到了这个错误。 l_name.append(line_info[1].strip()) IndexError: list index out of range >>>
        • @benjarmintia:修改了if 条件。试试这个
        • @benjarmintia:请接受任何对您有用的 1 个答案。
        猜你喜欢
        • 1970-01-01
        • 2020-09-01
        • 1970-01-01
        • 2019-03-04
        • 2018-05-20
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多