如何使用Python统计文本每行的单词数与字符数?
嘿,这两个Python统计需求都不难,我给你一步步讲清楚!
一、统计每行单词数
不管你的文本是存在字符串里还是文件中,核心思路都是按行拆分文本,再对每行拆分单词后统计数量。
情况1:文本是字符串变量
如果你的文本已经存在Python字符串里,比如:
# 示例文本(第一行5个单词,第二行4个,第三行2个) text_content = """Hello world foo bar baz Python is great tool Hi there""" # 先把文本按行拆分 lines = text_content.splitlines() # 遍历每行统计单词数 for line_num, line in enumerate(lines, start=1): # split()默认按任意空白(空格、制表符等)拆分单词,自动忽略首尾空白 word_count = len(line.split()) print(f"第{line_num}行单词数:{word_count}")
运行后会输出:
第1行单词数:5 第2行单词数:4 第3行单词数:2
情况2:文本存储在文件中
如果文本是存在.txt文件里,用文件读取的方式更高效:
# 打开文件(替换成你的文件路径) with open("your_text_file.txt", "r", encoding="utf-8") as file: # 逐行读取文件 for line_num, line in enumerate(file, start=1): # 先去掉每行末尾的换行符,再拆分单词统计 word_count = len(line.strip().split()) print(f"第{line_num}行单词数:{word_count}")
这里的strip()用来去掉每行首尾的空白(包括换行符),避免换行符干扰统计。
二、统计每行字符数
针对你给出的示例文本,核心是按行拆分后,直接统计每行的字符长度,注意要不要包含空白字符:
情况1:文本是字符串变量
假设你的示例文本按行拆分后是这样的(比如第一行是5个字符):
sample_text = """dam luru Goal Limaste Querto elh Dub Lon row Mumb lhi mba""" lines = sample_text.splitlines() for line_num, line in enumerate(lines, start=1): # 统计该行所有字符(包括空格,不包含换行符) char_count = len(line) print(f"第{line_num}行字符数:{char_count}")
如果需要去掉前后空白后的有效字符数,就把len(line)改成len(line.strip())。
情况2:文本存储在文件中
从文件读取时,每行末尾会自带换行符\n,如果不想把换行符算入字符数,记得先去掉:
with open("sample_file.txt", "r", encoding="utf-8") as file: for line_num, line in enumerate(file, start=1): # 只去掉末尾的换行符,保留行内的空格 char_count = len(line.rstrip('\n')) # 如果要去掉所有前后空白,用len(line.strip()) print(f"第{line_num}行字符数:{char_count}")
内容的提问来源于stack exchange,提问作者cpdor9
相关产品推荐
相关产品推荐

