Я нахожу следующее решение простым и легким читать:
@a = (1, 2, 3);
@b = ('apple', 'orange', 'grape');
@zipped = map {($a[$_], $b[$_])} (0 .. $#a);
Я полагаю, что это также быстрее, чем решения, которые создают массив в неправильном порядке сначала и затем используют часть для переупорядочения, или решения, которые изменяют @a
и @b
.
Что вы подразумеваете под «различием»? Разница в тексте PDF-файла или некоторое изменение макета (например, был изменен размер встроенной графики). Первый легко обнаружить, вторую почти невозможно получить (PDF - это ОЧЕНЬ сложный формат файла, который предлагает бесконечные возможности форматирования файлов).
Если вы хотите получить различие текста, просто запустите утилиту pdf to text на двух PDF-файлах, а затем используйте встроенную библиотеку Python diff для получения различий в преобразованных текстах.
Этот вопрос касается преобразования PDF в текст в Python: Модуль Python для преобразования PDF в текст .
Надежность этого метода зависит от используемых вами Генераторов PDF. Если вы используете, например, Adobe Acrobat и какой-нибудь PDF-Creator на основе Ghostscript для создания двух PDF-файлов из одного и того же текстового документа, вы все равно можете получить различие, хотя исходный документ был идентичным.
Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.
вы все равно можете получить различие, хотя исходный документ был идентичным.Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.
вы все равно можете получить различие, хотя исходный документ был идентичным.Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.
Я не знаю вашего варианта использования, но для регрессионных тестов скрипта, который генерирует pdf с помощью reportlab, я делаю diff pdfs путем
, например,
im1 = Image.open(imagePath1)
im2 = Image.open(imagePath2)
imDiff = ImageChops.difference(im1, im2)
Это работает в моем случае для отметки любых изменений, внесенных из-за изменений кода.
Посмотрите, это может быть полезно: http://pybrary.net/pyPdf/