首页 > 解决方案 > 垂直对齐 str 到反向水平序列

问题描述

一旦我获得了我需要的所有字符串,下一步就是找到所有垂直对齐的字符串整数并将它们彼此相邻放在同一行中,而不是每个 str 单独放置,然后将它们反转

文本文件:

night train whistles stars
over a nation under
mad temporal czars

round lumps of cells grow:

1234567     Info1 
1234567     Info2 
1234567     Info3 

5
2
7
0
1
5
8

3
2
7
0
1
5
8

9
6
1
7
4
5
8

1
9
7
0
1
5
8

8
9
7
2
4
5
8

9
9
7
2
4
5
8

Info5
Info6

期望的输出:

8510725 
8510723
8547169
8510791
8542798
8542799

代码:

ifile = open('pgone.txt','r')
buffer = ifile.readlines()
temp = ""
listy = []

for e in buffer:
    temp += e.strip('""')
    if len(e) == 2:
        listy.append(e)


one = listy[0:7]
two = listy[7:14]
three = listy[14:21]
four = listy[21:28]
five = listy[28:35]
six = listy[35:]

one.reverse()
two.reverse()
three.reverse()
four.reverse()
five.reverse()
six.reverse()

当然,现在我以这种方式分别获得了所需的结果,但是,我有兴趣为这个问题获得更优雅的解决方案。谢谢!

标签: pythonstringlist

解决方案


下面的代码可以解决问题:

numbers = []
numbers_converted = []

with open('txtfile.txt','r') as f:
    for line in f.readlines():
        if len(line) == 2:
            numbers.append(line.replace('\n', ''))

    numbers = [numbers[i*7:i*7+7] for i in range(7)] #The word is 7 char big
    numbers.pop() #Get rid of the last list because it is empty

    for number in numbers:
        number.reverse()

        numbers_converted.append(int("".join(number)))

print(numbers_converted)

输出上面的代码:

[8510725, 8510723, 8547169, 8510791, 8542798, 8542799]

推荐阅读