numpy.loadtxt在1.23.4版本用多字符分隔符触发TypeError问题
numpy.loadtxt多字符分隔符版本兼容问题解决方法
在numpy 1.23.4及后续版本中,np.loadtxt不再支持多字符分隔符(如||),运行原代码会抛出TypeError: Text reading control character must be a single unicode character or None; but got: '||'错误,而numpy 1.22.4及更早版本可正常执行。
测试代码:
from io import StringIO import numpy as np csv_file = StringIO("""1||2 3||4 5||6 """) print(np.loadtxt(csv_file, delimiter="||"))
解决方法
使用
numpy.genfromtxt替代loadtxtgenfromtxt仍支持多字符分隔符,无需修改数据即可直接替换:from io import StringIO import numpy as np csv_file = StringIO("""1||2 3||4 5||6 """) print(np.genfromtxt(csv_file, delimiter="||"))输出结果与旧版本
loadtxt一致:[[1. 2.] [3. 4.] [5. 6.]]预处理数据替换分隔符
将多字符分隔符替换为单字符(如逗号、单竖线),再用loadtxt加载:from io import StringIO import numpy as np csv_content = """1||2 3||4 5||6 """ # 替换多字符分隔符为单字符逗号 processed_content = csv_content.replace("||", ",") csv_file = StringIO(processed_content) print(np.loadtxt(csv_file, delimiter=","))注意替换的字符需避免与数据内容冲突。
降级numpy版本(不推荐)
若需保持原代码不变,可临时降级到1.22.4版本:pip install numpy==1.22.4此方法会错过新版本的bug修复与功能更新,仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者Alexander L. Hayes
相关产品推荐
相关产品推荐

