Python按行处理文件中的序号

前言

1、本文以 TXT 文件为例,使用Python按行处理文件中的序号。

2、不知大家有没有这样的经历,你在自己的实验室电脑上有一个文件,文件中记录了自己不熟悉的单词或者自己写代码过程中的一些思想,都是按条记录的,序号是从1开始的。放假回家后,在家恰巧也学习了,又在自己笔记本电脑上做了同样的工作,序号也是从1开始的(你不记得实验室电脑上最后一条记录是多少了)。回到学校后你想把两个文件合并,序号按顺序排列。

3、网上虽然有很多python的文章,但我找了下,没有能直接解决我问题的文章,我大概花了两个小时才解决这一个小问题,很是浪费时间,因此准备把它记录下来,说不定就帮助了正在看文章的你呢,嘿嘿。

去除文件中的空行

1、假设你的文件中有空行,使用strip()方法去除。代码如下:
2、文件路径需要换成绝对路径。

file1 = open('test.txt', 'r', encoding='utf-8')      # 要去掉空行的文件 
file2 = open('test1.txt', 'w', encoding='utf-8')     # 生成没有空行的文件
try:
    for line in file1.readlines():      # 函数一次读取整个文本文件,但是将文本文件以行为单位将内容处理为一个关于行的列表。
    	if line == '\n':
        	line = line.strip("\n")
        file2.write(line)
finally:
   file1.close()
   file2.close()

去除原有的编号,换成新的标号

1、如果上述没有去除空行直接执行这一步的话,空行也会被添加一个序号。所以上一步不可少。
2、使用正则表达式去除文件中的原有的标号,然后迭代为每一行添加序号。代码如下:

import re
with open('test1.txt', 'r', encoding='utf-8') as f:
    lines =f.readlines()                         # 函数一次读取整个文本文件,但是将文本文件以行为单位将内容处理为一个关于行的列表。
    for i in range(len(lines)):
        lines[i] = re.sub(r'\d+\.', '', lines[i])  # 去除文件中的原有的标号
    lines=[str(index1)+"."+temp1.rstrip()+'\n' for index1,temp1 in enumerate(lines,start=128)]    # start设置成你想要的开始序号
with open('test2.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

为文件行与行之间添加空行:

1、为了美观,需要在行与行之间添加空行。代码如下:

file1 = open('test2.txt', 'r', encoding='utf-8')      # 没有空行的文件
file2 = open('test3.txt', 'w', encoding='utf-8')      # 生成带空行的文件 
try:
    for line in file1.readlines():    # 函数一次读取整个文本文件,但是将文本文件以行为单位将内容处理为一个关于行的列表。
        file2.write(line)
        file2.write('\n')
finally:
    file1.close()
    file2.close()

你可能感兴趣的:(python)