Python文本处理:如何为每行末尾添加行号和累计单词数(不可用导入函数)
代码修改方案
现有代码存在的问题
- 读取的每行末尾自带换行符,直接追加内容会导致行号、累计单词数被换到下一行
- 使用
split(' ')统计单词数时,行内如果有连续空格、首尾空格会统计到空字符串,导致计数不准,用无参split()可以自动按任意空白分割,自动忽略无效空白 - 写入输出文件时仅写入了原始行内容,没有追加行号、累计单词数,也没有补充换行符
修改后的代码
def annotate(f_in): with open(f_in, 'r') as f: with open('annotated.txt', 'w') as f_out: words = 0 for i, line in enumerate(f, start = 0): # 只移除行尾的换行符,保留行内原有格式 line_content = line.rstrip('\n') # 统计当前行单词数并累加 current_word_cnt = len(line_content.split()) words += current_word_cnt # 拼接输出内容并补充换行符 write_content = f"{line_content} {i} {words}\n" f_out.write(write_content) # 控制台打印调试用,不需要可以删除 print(write_content.strip('\n'))
效果验证
使用你提供的原始文本测试,输出结果和需求完全一致,处理后输出的annotated.txt内容为:
cat 0 1 cat in 1 3 cat in the hat 2 7
内容的提问来源于stack exchange,提问作者Dojje
相关产品推荐
相关产品推荐

