Skip to main content
 首页 » 编程设计

python之元组重排Python

2025年05月04日16oomusou

我有以下代码:

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')