Python组织文本文件的内容

时间:2018-04-09 20:04:56

标签: python python-3.x

我有一个文本文件,其中包含以下内容:

IMAGE_[A0]_00001.jpg
IMAGE_[A0]_00002.jpg
IMAGE_[A1]_00001.jpg
IMAGE_[A1]_00002.jpg
IMAGE_[B0]_00001.jpg
IMAGE_[B0]_00002.jpg
IMAGE_[B1]_00001.jpg
IMAGE_[B1]_00002.jpg

我需要组织如下:

IMAGE_[A0]_00001.jpg
IMAGE_[A1]_00001.jpg
IMAGE_[B0]_00001.jpg
IMAGE_[B1]_00001.jpg
IMAGE_[A0]_00002.jpg
IMAGE_[A1]_00002.jpg
IMAGE_[B0]_00002.jpg
IMAGE_[B1]_00002.jpg

我如何使用python 3x做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以使用密钥排序,然后写回文件:

with open('test.txt') as f:
    data = sorted(f.read().splitlines(), key=lambda x: (x[11:16], x[7:9]))
    print('\n'.join(data))

输出:

IMAGE_[A0]_00001.jpg
IMAGE_[A1]_00001.jpg
IMAGE_[B0]_00001.jpg
IMAGE_[B1]_00001.jpg
IMAGE_[A0]_00002.jpg
IMAGE_[A1]_00002.jpg
IMAGE_[B0]_00002.jpg
IMAGE_[B1]_00002.jpg

答案 1 :(得分:1)

您的商品名称为set MYSQLDATAPATH="%HOMEDRIVE%\wamp\bin\mysql\mysql5.7.19\data" or set MYSQLDATAPATH="%HOMEDRIVE%\wamp64\bin\mysql\mysql5.7.19\data" x IMAGE_ y _。它们现在按(x,y)排序,需要按(y,x)排序。

这可以通过例如完成通过正则表达式:

.jpg

答案 2 :(得分:1)

您可以使用resorted

import re
import string
def key_param(d):
   a, b= re.findall('(?<=\[)\w+(?=\])|\d+(?=\.jpg)', d)
   return [int(b)]+[int(i) if i.isdigit() else string.ascii_uppercase.index(i) for i in a]

file_data = [i.strip('\n') for i in open('filename.txt')]

new_data = sorted(file_data, key=key_param)
with open('filename.txt', 'w') as f:
  f.write('\n'.join(new_data))

输出:

IMAGE_[A0]_00001.jpg
IMAGE_[A1]_00001.jpg
IMAGE_[B0]_00001.jpg
IMAGE_[B1]_00001.jpg
IMAGE_[A0]_00002.jpg
IMAGE_[A1]_00002.jpg
IMAGE_[B0]_00002.jpg
IMAGE_[B1]_00002.jpg