我正在尝试解析并拆分该行:
redfish - 12,000 lbs - trade for SNE stocks
我正在尝试的代码是:
elif ('-' in line) and ('lbs' in line):
fish, remainder = line.split('-') #splits line into two halves at the - (fish to one side)
#print("line.split is:", line.split(':'))
if '@' in remainder:
weight, price = remainder.split('@') #splits already split piece (remainder) into two halves at @
if '-->' in price:
price, junk = price.split('-->')
if 'trade' in remainder:
if 'to ' in remainder:
weight, price = remainder.split('to ')
elif ' or ' in remainder:
weight, price = remainder.split(' or ') #add spaces around ' or ' so we don't match 'for'
if 'swap' in remainder:
weight, price = remainder.split('to ')
它失败了:
fish, remainder = line.split('-')
错误:
ValueError: too many values to unpack (expected 2)
。
现在我知道这是因为该行中有2个'-'
并且Python不知道要拆分哪一个,所以我试着告诉它拆分第一个{{1} } with:'-'
但失败了。
所以我的问题是:有没有办法解决这个问题?我可以用另一种方式索引fish, remainder = line.split('-'[0])
命令,以便我可以像我想的那样成功地拆分该行吗?
感谢您提供任何帮助或提示。
答案 0 :(得分:2)
你很亲密,尝试使用:
line.split('-', 1)
它告诉它只在第一个' - '上分割字符串。遇到了。
但是,我不知道直接编制索引的可能性。如果要仅在第二个上拆分,请使用split命令。
在这种情况下,我建议拆分整个字符串,然后加入你想要的部分。