[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] Python把TXT转换为csv格式,转换后对数据作分列删除和增加列操作

本帖最后由 superman 于 2021-7-20 23:15 编辑

刚接触python想将TXT文本数据转换为csv格式保存,然后还需要对第二列数据作分列删除URL,然后再增加一列固定列,具体情况见附件,求大佬指点,谢谢
  1. #-*-coding:utf-8 -*-
  2. import csv
  3. with open('File.csv', 'w+',newline='' ) as csvfile:
  4.     spamwriter = csv.writer(csvfile, dialect='excel')
  5.     # 读要转换的txt文件
  6.     with open('python测试数据.txt', 'r',encoding='utf-8') as filein:
  7.         for line in filein:
  8.             line_list = line.strip('\n').split(',')
  9.             spamwriter.writerow(line_list)
复制代码
附件https://wwr.lanzoui.com/imOsppu5lub

  1. import csv
  2. import datetime
  3. if __name__ == '__main__':
  4.     read_txt = 'E:/Python/python测试数据.txt'
  5.     write_csv = 'E:/Python/link.csv'
  6.     today = datetime.date.today()
  7.     with open(read_txt, 'r', encoding='utf8') as f:
  8.         lines = f.readlines()
  9.         for i in range(len(lines)):
  10.             link = lines[i].split(',')[0]
  11.             col = lines[i][lines[i].rindex('/')+1:].strip('\n')
  12.             time = str(today.strftime('%Y%m%d')) + '-xl'
  13.             data = [link, col, time]
  14.             with open(write_csv, 'a', newline='') as c:
  15.                 w = csv.writer(c, dialect='excel')
  16.                 w.writerow(data)
复制代码
1

评分人数

TOP

回复 2# wxyz0001


    感谢老师帮助

TOP

回复 2# wxyz0001


   老师您好,我还想知道如果要给这段程序加上一个进度条的话应该这样实现呢,我百度了一些案例但是一直不得要领,求指教,谢谢

TOP

回复 4# superman
  1. import csv
  2. import datetime
  3. from tqdm import tqdm    # 安装第三方库
  4. read_txt = 'E:/news/Python/python测试数据.txt'
  5. write_csv = 'E:/news/Python/data.csv'
  6. today = datetime.date.today()
  7. with open(read_txt, 'r', encoding='utf8') as f:
  8.     lines = f.readlines()
  9.     for line in tqdm(lines):
  10.         link = line.split(',')[0]
  11.         col = line[line.rindex('/')+1:].strip('\n')
  12.         time = str(today.strftime('%Y%m%d')) + '-xl'
  13.         data = [link, col, time]
  14.         with open(write_csv, 'a', newline='') as c:
  15.             w = csv.writer(c, dialect='excel')
  16.             w.writerow(data)
复制代码
1

评分人数

TOP

回复 5# wxyz0001


    谢谢老师回复,另外还有一个问题 'with open(write_csv, 'a', newline='') as c:'这句里的'a'是追加写入,如果我改为覆盖写入'w',却只有首行有数据,数据为该文本的最后一行,前面的都被覆盖掉了,这是什么原因呢? 我希望达到的目的是,每次写都清空csv文件内的数据,然后再写入

TOP

  1. #-*-coding:utf-8 -*-
  2. import csv
  3. import time
  4. def getLineData(constant):
  5.     # 读要转换的txt文件
  6.     with open('python测试数据.txt', 'r', encoding='utf-8') as filein:
  7.         for line in filein:
  8.             a, b = line.strip('\n').split(',')
  9.             yield a, b[b.rfind('/')+1:], constant
  10. def saveDataToCsv(fileName):
  11.     constant = time.strftime('%Y%m%d') + '-xl'
  12.    
  13.     with open(fileName, 'w', newline='' ) as csvfile:
  14.         spamwriter = csv.writer(csvfile, dialect='excel')
  15.         for line in getLineData(constant):
  16.             spamwriter.writerow(line)
  17. if __name__ == "__main__":
  18.    
  19.     fileName = 'File.csv'
  20.     saveDataToCsv(fileName)
复制代码
回复 6# superman
1

评分人数

QQ:1972544783

TOP

回复 7# Gin_Q


    您的代码运行速度非常快,感谢!

TOP

回复 7# Gin_Q


    老师您好,如果我想把结果保存为xlsx的Excel文件,首行A1,B1设置为标题行(A1="标题1",B1="标题2"),又该怎样实现呢?谢谢

TOP

回复 5# wxyz0001


    老师您好,如果我想把结果保存为xlsx的Excel文件,首行A1,B1设置为标题行(A1="标题1",B1="标题2"),又该怎样实现呢?谢谢

TOP

返回列表