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