Python:先按逗号分隔行,然后按空格分隔行
我使用的是Python3,我需要解析这样一行代码Python:先按逗号分隔行,然后按空格分隔行,python,string,split,Python,String,Split,我使用的是Python3,我需要解析这样一行代码 -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(" , "
-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=[X[1]中元素的分数(elem)]。split()
索引器:列表索引超出范围
我不明白。我从行
中得到一个字符串。我在“”和“
处将该字符串拆分为两个字符串,应该会得到一个包含两个字符串的列表X
。在将每个元素转换为分数时,我将这些元素在空白处拆分为两个单独的列表。我错过了什么?
我还尝试添加X[-1]=X[-1].strip()
,以摆脱从结束行中得到的\n
。问题是,文件中有一行没有,“
,因此拆分不会返回两个元素
我会使用split(',')
代替,然后使用strip
删除前导空格和尾随空格。请注意,str(…)
是冗余的,split
已经返回字符串
X = [elem.strip() for elem in line.split(",")]
您可能在文件末尾还有一个空行,这仍然只会为拆分产生一个结果,因此您应该有办法处理这种情况。如果输入有效,您的代码实际上可以工作
您可能会得到一个无效的行,有太多的空间,甚至一个空行左右。因此,循环中的第一件事就是打印行
。然后,您知道发生了什么,您可以在错误消息的正上方看到有问题的行是什么
或者你没有正确使用标准输入法。在文件中写入输入行,确保只有有效行(尤其是没有空行)。然后将其输入到脚本中:
python myscript.py < test.txt
python myscript.py
这个怎么样:
pairs = [line.split(",") for line in stdin]
num = [fraction(elem[0]) for elem in pairs if len(elem) == 2]
den = [fraction(elem[1]) for elem in pairs if len(elem) == 2]
我想知道同样的事情@PadraicCunningham看起来可能需要使用regex,如果两种情况都需要考虑,请在进行后续列表理解之前打印出X,并告诉我们确切值是多少。另外,您不需要对行中的元素执行[str(elem)].split(',')]
只要执行line.split(','))
[str(elem)对行中的元素执行.split(“,”)
相当于line.split(“,”
)。对当我用一个文件做这件事时,它就工作了。问题是当我运行时没有文件,只是从命令行。然后我得到一个空字符串作为最后一个。