VS Code中Python列表转整数失败:ValueError错误求助
解决ValueError: invalid literal for int() with base 10: '4\x1a'问题
错误原因分析
- 特殊字符混入输入:
\x1a是Windows系统的文件结束符(对应快捷键Ctrl+Z),在VS Code终端输入矩阵后按Ctrl+Z结束输入时,这个字符会被sys.stdin.read()读取到,导致无法转换为整数。而在线编译器和Jupyter Notebook会自动忽略该控制字符,因此不会报错。 - 代码逻辑错误:原代码中的
for m in matrix: matrix=[int(l) for l in m]会循环覆盖matrix变量,最终仅保留最后一行的整数列表,而非完整的二维矩阵。
修复后的代码
import sys import pandas as pd def load_matrix(): # 读取输入并过滤Windows结束符\x1a raw_input = sys.stdin.read().replace('\x1a', '') # 按行分割,过滤空行 rows = [row.strip() for row in raw_input.strip().split('\n') if row.strip()] # 转换为整数矩阵,处理连续空格导致的空字符串 matrix = [] for row in rows: elements = [int(num) for num in row.split() if num.strip()] matrix.append(elements) print("\n数据加载成功") print("\n") return pd.DataFrame(matrix)
使用说明
- 在VS Code终端输入矩阵内容后,可按Ctrl+D(Windows下也可按Ctrl+Z,代码已兼容处理)结束输入。
- 代码支持处理输入中的连续空格,避免因分割出空字符串导致转换失败。
内容的提问来源于stack exchange,提问作者user15221508
相关产品推荐
相关产品推荐

