需求:从testdata.txt中提取ip,serialNumber,mobile三列内容并以逗号分隔,然后再写入csv文件中。
(1)testdata.txt内容如下:
[10.223.80.184] out: Serial Number: dCrtoCkh-ba5a-46f7-93e5-mMV02nyg mobile: 13292163519
OFcRnGG4
[10.223.80.7] out: Serial Number: QaNk1tQr-ba5a-46f7-93e5-Tp9Ho2cZ mobile: 13249011314
nbEPGXQh
(2)提取后内容并保存到t2.txt,内容如下:
10.223.80.184,dCrtoCkh-ba5a-46f7-93e5-mMV02nyg,13292163519
10.223.80.7,QaNk1tQr-ba5a-46f7-93e5-Tp9Ho2cZ,13249011314
(3)将t2.txt写入到csv文件中
实现如下:
#将testdata.txt中的内容格式化为ip,serialNumber,mobile三列内容并以逗号分隔
#以只读方式打开testdata.txt
oldf = open('testdata.txt',encoding="utf-8")
#以追加方式创建并打开t2.txt
newf = open('t2.txt',mode='a+',encoding='utf-8')
#读取testdata.txt第一行内容
line = oldf.readline()
while(line):
#只处理'mobile'所在行的内容
if 'mobile' in line:
#利用字符串切片方法分别获取ip,serialNumber,mobile三部分内容
line_new_temp = str.split(line,' ')
column_ip_temp = line_new_temp[0]
column_ip = column_ip_temp[1:-1]
column_serialNum = line_new_temp[4]
column_mobile = line_new_temp[-1]
#将获取的内容重组成一个新串
line_new = column_ip + ',' + column_serialNum + ',' + column_mobile
#print(line_new)
#将格式化后的内容写入t2.txt
newf.write(line_new)
#读取下一行
line = oldf.readline()
#关闭文件
oldf.close()
newf.close()
#将格式化后的内容导入到csv文件中
#以只读方式打开经过格式化的t2.txt
f = open('t2.txt',encoding='utf-8')
#以追加方式创建并打开testdata_csv.csv
fin = open('testdata_csv.csv',mode='a+',encoding='utf-8',newline='')
#逐行读取
line = f.readline()
while(line):
#逐行写入testdata_csv.csv
fin.write(line)
#读取一行
line = f.readline()
#关闭文件
f.close()
fin.close()