использовать строку как обычный текст в коде - PullRequest
0 голосов
/ 27 июня 2018

код читает текстовый файл с числами, разделенными на

537, 487, 1115, 652\n
1265, 395, 1629, 693\n

код читает текстовый файл и делит "\ n", оставляя список вроде:

['537, 487, 1115, 652','1265,395,1629,693']

Мне нужно использовать каждую строку как обычный текст в моем коде, чтобы обрезать изображение с помощью PIL поэтому я хотел бы знать, есть ли способ избавиться от «строки», поэтому в коде это будет выглядеть так:

img2 = img.crop((537, 487, 1115, 652))

вместо:

img2 = img.crop(('537, 487, 1115, 652'))

код выглядит так:

import os, sys
from PIL import Image
import PIL.ImageOps

lines = [line.rstrip('\n') for line in open('file.txt')]

for i in range(0, len(lines)):

    img = Image.open("data\\image.jpg")
    img2 = img.crop((int(lines[i])))
    inimg = PIL.ImageOps.invert(img2)
    inimg.save("data\\orcropinverted.jpg")

Я знаю, что мог бы использовать другой подход и конвертировать каждое число в целое число, но я хотел бы знать, можно ли это сделать таким образом.

EDIT:

Я кое-что выяснил с помощью re , но это не то, что я ищу, все равно работает ...

import os, sys
import re
from PIL import Image
import PIL.ImageOps

lines = [line.rstrip('\n') for line in open('file.txt')]

for i in range(0, len(lines)):

    p = re.compile('\d+')
    sgline = p.findall(lines[i])

    img = Image.open("data\\image.jpg")
    img2 = img.crop((int(sgline[0]),int(sgline[1]),int(sgline[2]),int(sgline[3])))
    inimg = PIL.ImageOps.invert(img2)
    inimg.save("data\\orcropinverted.jpg")
...