You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中从TXT文件匹配'MB/s'?代码返回None求助

排查re.match匹配'MB/s'返回None的问题

我来帮你分析下可能的原因和解决办法:

1. 文件路径的转义陷阱

你写的文件路径是'C:\Python27\BCF013K.txt',在Python字符串里,\是转义字符,\P属于无效的转义序列,这可能导致Python无法正确识别文件路径,进而读取不到文件内容(data为空字符串),自然re.match返回None。

解决办法:把路径改成原始字符串(加r前缀),或者把\换成\\:

# 方法1:原始字符串
raw = open(r'C:\Python27\BCF013K.txt', encoding='UTF-8')
# 方法2:转义反斜杠
raw = open('C:\\Python27\\BCF013K.txt', encoding='UTF-8')

2. UTF-8 BOM头的干扰

如果你的文件是带UTF-8 BOM头保存的,那么read()得到的字符串开头会有一个不可见的BOM字符(\ufeff),这会导致MB/s不是字符串的真正起始位置,re.match就匹配不到。

可以先检查data的开头:

print(repr(data[:10]))  # 打印前10个字符的原始表示,看有没有\ufeff

如果确实有BOM,可以用utf-8-sig编码打开文件来自动去除BOM:

raw = open(r'C:\Python27\BCF013K.txt', encoding='utf-8-sig')

3. 换用re.search替代re.match

re.match只从字符串的第一个字符开始匹配,而re.search会扫描整个字符串寻找匹配项。即使开头有问题,用re.search可以先确认文件里是否真的存在'MB/s':

print(re.search(r'MB/s', data))

如果这个能返回匹配结果,就说明是开头位置的问题(比如BOM或路径导致的读取异常)。

验证步骤

建议你按这个顺序排查:

  • 先修正文件路径,确保能正确读取文件内容(可以打印data看看是否和文件内容一致)
  • 如果读取正常但match还是返回None,检查是否有BOM头
  • 最后用re.search确认匹配是否存在

内容的提问来源于stack exchange,提问作者user2643912

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:51:09