如何使用Python在文本文件中查找子字符串?
Python 在文本文件中查找子字符串的方法(含
in/not in操作符详解) 核心逻辑:in/not in的本质
in和not in是Python判断子字符串是否存在于目标字符串的基础操作符,处理文本文件时,只需把文件内容(或每行内容)转为字符串,就能直接用这两个操作符判断。
方法1:一次性读取文件后查找
适合小文件,代码简洁:
# 替换成你的文件路径 file_path = "example.txt" # 要查找的子字符串 target = "hello world" # with语句自动管理文件的打开与关闭 with open(file_path, 'r', encoding='utf-8') as f: # 读取整个文件内容到字符串变量中 file_content = f.read() # 用in判断子串是否存在 if target in file_content: print(f"文件中存在子串:{target}") else: print(f"文件中未找到子串:{target}")
方法2:逐行查找(适合大文件)
如果文件过大,一次性读取会占用过多内存,逐行读取更高效,还能定位子串所在行号:
file_path = "large_file.txt" target = "important content" is_found = False with open(file_path, 'r', encoding='utf-8') as f: # enumerate获取行号,start=1让行号从1开始计数 for line_num, line_content in enumerate(f, start=1): if target in line_content: print(f"在第{line_num}行找到子串:{target}") is_found = True # 若只需找第一个匹配项,可直接break终止循环 # break if not is_found: print(f"文件中未找到子串:{target}")
not in的用法
和in逻辑相反,用来判断子串不存在:
with open(file_path, 'r', encoding='utf-8') as f: file_content = f.read() if "unwanted string" not in file_content: print("文件中没有这个子串") else: print("文件中存在这个子串")
实用技巧
- 忽略大小写匹配:
不需要区分大小写时,可把文件内容和目标子串统一转成小写(或大写):if target.lower() in file_content.lower(): print("找到匹配(忽略大小写)") - 精确匹配整行:
要判断某一行完全等于目标字符串(排除行尾换行符),用strip()去除空白字符后比较:if line_content.strip() == target: print(f"第{line_num}行完全匹配目标内容")
内容的提问来源于stack exchange,提问作者Chankapure Kameshwar
相关产品推荐
相关产品推荐

