python将lis中的最后两个索引连接起来

2024-06-02 03:06:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望我的问题有道理。如果一个IF语句被证明是真的,我希望加入最后两个索引,但是我得到了一个错误。你知道吗

这是我的文本文件:

AAA BBB CCC NY 10018      111111111E
AAA BBB CCC DDD NY 11946222222222E
AAA BBB CCC NY 10018      333333333E
AAA BBB CCC DDD NY 11946444444444E

这是我的密码:

with open('O:/python1docs/sample_1.txt', 'rb') as infile:

    data1 = []
    for row in infile:
        row = row.strip().split()
        rend = len(row) - 1
        rend2 = rend - 1
        rend3 = rend2 - 1
        if len(row[rend]) == 10 and len(row[rend2]) == 5 and len(row[rend3]) == 2:
            row = row[0:rend2] + ' ' + ''.join(row[rend2] + row[rend])
            data1.append(row)
        else:
            data1.append(' '.join(row))
    print '\n'.join(data1)

收到错误消息:

Traceback (most recent call last):
  File "O:\python1\py_programs\lipa_newbiz3.py", line 12, in <module>
    row = row[0:rend2] + ' ' + ''.join(row[rend2] + row[rend])
TypeError: can only concatenate list (not "str") to list
[Finished in 0.2s with exit code 1]

我可以连接任何单个索引,即:row = row[*] + ' ' + ''.join(row[rend2] + row[rend]),代码也可以工作,但是当我尝试将所有索引连接在一起row[0:rend2] + ' ' + ''.join(row[rend2] + row[rend])时,就会出错

非常感谢您的帮助。-谢谢

这就是我想要的

['AAA BBB CCC NY 10018111111111E']
['AAA BBB CCC DDD NY 11946222222222E']
['AAA BBB CCC NY 10018333333333E']
['AAA BBB CCC DDD NY 11946444444444E']

更远的路

for row in infile:
    row = row.strip().split()
    rend = len(row) - 1
    rend2 = rend - 1
    rend3 = rend2 - 1
    row1 = []
    templist1 = []
    templist2 = []
    templist3 = []
    templist4 = []
    templist5 = []
    if len(row[rend]) == 10 and len(row[rend2]) == 5 and len(row[rend3]) == 2:
        templist1.append(' '.join(row[0:rend2]))
        templist2.append(row[rend2])
        templist3.append(row[rend])
        templist4.append(' '.join(templist1 + templist2))
        templist5.append(''.join(templist4 + templist3))
        print ' '.join(templist5)
    else:
        row = ' '.join(row)
        print row

这是一条较短的路

for row in infile:
    row = row.strip().split()
    rend = len(row) - 1
    rend2 = rend - 1
    rend3 = rend2 - 1
    if len(row[rend]) == 10 and len(row[rend2]) == 5 and len(row[rend3]) == 2:
        row = ' '.join(row[0:rend2]) + ' ' + ''.join(row[rend2] + row[rend])
        print row
    else:
        row = ' '.join(row)
        print row

Tags: andinlenrowprintjoinbbbccc
1条回答
网友
1楼 · 发布于 2024-06-02 03:06:15

不能对字符串和列表类型应用“+”运算符

row = ' '.join(row[0:rend2]) + ' ' + ''.join(row[rend2] + row[rend])

或者

tmplist = row[0:rend2]
row = ' '.join(tmplist.append(''.join(row[rend2] + row[rend])))

相关问题 更多 >