python字符提取形成新列

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

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

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

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()