【发布时间】:2015-05-07 22:49:26
【问题描述】:
我正在使用 Python 3,我需要像这样解析一行
-1 0 1 0 , -1 0 0 1
我想使用Fraction 将其分成两个列表,以便我也可以解析类似的条目
1/2 17/12 , 1 0 1 1
我的程序使用这样的结构
from sys import stdin
...
functions'n'stuff
...
for line in stdin:
我正在尝试做
for line in stdin:
X = [str(elem) for elem in line.split(" , ")]
num = [Fraction(elem) for elem in X[0].split()]
den = [Fraction(elem) for elem in X[1].split()]
但我得到的只是列表索引超出范围错误:den = [Fraction(elem) for elem in X[1].split()]
IndexError: list index out of range
我不明白。我从line 得到一个字符串。我在" , " 处将该字符串拆分为两个字符串,并且应该得到一个包含两个字符串的列表X。这些我在空白处拆分为两个单独的列表,同时将每个元素转换为Fraction。我错过了什么?
我还尝试添加X[-1] = X[-1].strip() 以摆脱我从结束行中得到的\n。
【问题讨论】:
-
我想知道同样的事情@PadraicCunningham 看起来如果两种情况都需要考虑,可能需要使用正则表达式
-
请在执行后续列表推导之前打印出 X 并告诉我们确切的值是什么。另外,你不需要做
[str(elem) for elem in line.split(' , ')]只需做line.split(' , ') -
[str(elem) for elem in line.split(" , ")]等价于line.split(" , ")。