weixin_44630307 2021-11-18 17:05 采纳率: 0%
浏览 26

python字符提取形成新列

在txt文档(测试数据)中某一列名(20211019_A1_101A),希望按照"_"提取其中的一部分(A1),同时在最后新加以列,将提出来的字符作为新的列名,原来列任然保留。

  • 写回答

1条回答 默认 最新

  • YirongChen 2022-01-19 03:14
    关注

    这是典型的字符串的正则表达式操作,实现如下:

    如果觉得有帮助,请采纳,谢谢!

    import re
    # 定义读取文件的函数,
    def read_file_to_list(file_path='old_list.txt'):
        '''file_path: txt文件路径
        '''
        file=open(file_path,mode='r',encoding='UTF-8')
        file_list=[]
        contents = file.readlines()
        for msg in contents:
            msg = msg.strip('\n')
            adm = msg.split(' ')
            file_list.append(adm)
        return file_list
    # 将txt文件读为列表,格式如下:
    list1 = read_file_to_list(file_path='old_list.txt')
    print("读取文件并且转化为列表:",list1)
    
    # 定义提取子字符串构建新的列表函数
    def create_new_column(file_list, column):
        '''file_list: txt转化为列表形式,如下所示:
            [["20211019_A1_101A", "其他内容"], 
             ["20211019_B1_111A", "其他内容"], 
             ["20211019_C1_101B", "其他内容"], 
             ["20211019_D1_102A", "其他内容"]
            ]
           column: "20211019_A1_101A"这一列在第几列,例如上面的在第1列,则输入1
        
        '''
        new_list = []
        for str_i in file_list:
            list_str_j = re.split(r"_(.*?)_", str_i[column-1]) # 拆分为这种形式: ['20211019', 'A1', '101A']
            str_i.append(list_str_j[1])
            new_list.append(str_i)
        return new_list
    
    new_list = create_new_column(list1,1) # 将"20211019_A1_101A"所在列传递给函数       
    print(new_list)
    
    # 将新的列表保存为新文件
    with open('new_list.txt','w') as f:
        for i in list1:
            for j in i:
                f.write(j)
                f.write(' ')
            f.write('\n')
        f.close()
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月18日