Python读取TXT文件中x、y值至二维数组/字典等数据结构的方法
读取文本中的x、y值到二维数组或字典的Python方案
嘿,作为Python新手遇到这种问题太正常了,咱们先揪出你代码里的几个小问题:
- 你用
n, r, t = line.strip().split(' ')拆分了每行,但后面却用了没定义的k和v,变量名完全不匹配 - 如果每行是
x y两个值的格式,拆分后应该对应两个变量,不是三个哦
接下来给你两种简洁好懂的解决方案,按需选择就行:
方案1:读取到二维数组(列表的列表)
如果你的文本每行是x y这样的数值对,用列表推导式就能快速生成二维数组,还能自动处理空行:
# 用with语句打开文件,会自动帮你关闭,避免忘记关文件的问题 with open('text.txt', 'r') as f: # 每行拆分后转成浮点数,组成二维列表(要整数就把float换成int) xy_array = [list(map(float, line.strip().split())) for line in f if line.strip()]
小解释:
line.strip():去掉每行前后的空格、换行符split():默认按任意空格拆分(不管是1个还是多个空格都能处理)map(float, ...):把拆分出来的字符串转成数值类型if line.strip():跳过空行,避免生成空列表出错
方案2:读取到字典(x为键,y为值)
如果想把x和y存成键值对,假设每行第一个值是x,第二个是y,普通循环版和简洁推导式版都给你:
普通循环版(新手更易理解)
with open('text.txt', 'r') as f: xy_dict = {} for line in f: line_content = line.strip() if not line_content: continue # 跳过空行 x_str, y_str = line_content.split() # 转成数值类型,按需换int xy_dict[float(x_str)] = float(y_str)
简洁推导式版
with open('text.txt', 'r') as f: xy_dict = {float(x): float(y) for x, y in (line.strip().split() for line in f if line.strip())}
额外小提示
如果你的文本开头有注释行(比如非x、y的说明内容),可以先跳过这些行,比如要跳过前2行:
with open('text.txt', 'r') as f: # 跳过前2行注释 next(f) next(f) xy_array = [list(map(float, line.strip().split())) for line in f if line.strip()]
这样就能精准读取你需要的x、y数据啦~
内容的提问来源于stack exchange,提问作者Jofbr
相关产品推荐
相关产品推荐

