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