我有以下代码:
check = open(a, 'r')
line =check.readlines()
for items in line:
breakup= items.split()
length = (len(breakup)-1)
number[0], salary[1], position[2], oname[3:length], first[-1] = breakup
data.append(tuple([first, oname, number, position, salary]))
这段代码从包含通用信息的文本文件中读取,例如:
15674 24000 Manager Gregory the 1st John
我正在尝试使用 for 循环按照我要求的顺序将信息附加到数据,因此上述信息将显示为:
('John', 'Gregory the 1st', 15674, 'Manager', 24000)
我将 oname 从位置 3 切片到倒数第二个位置的原因是 oname 可以是任意数量的名字,但是名字总是一个项目,所以我 100% 确定我可以从位置 [-1] 调用它
我遇到的问题是它不起作用。该代码将正确读取文件并正确分解它,但是我无法正确重新排列它。
请您参考如下方法:
您需要以不同方式拆分您的行,然后分配没有索引和切片分配的部分:
number, salary, position, rest = items.split(None, 3)
oname, first = rest.rsplit(None, 1)
data.append((first, oname, number, position, salary))
这保留了 oname 字段中的空格。第一次调用仅拆分 3 次,为您提供前三个字段和余数。 rest 中的余数然后从右边 拆分一次,给你 oname 和 first。
演示:
>>> items = '15674 24000 Manager Gregory the 1st John\n'
>>> number, salary, position, rest = items.split(None, 3)
>>> oname, first = rest.rsplit(None, 1)
>>> first, oname, number, position, salary
('John', 'Gregory the 1st', '15674', 'Manager', '24000')
