Речь идет не о AndroidManifest.xml вашего приложения.
Сообщение об ошибке говорит о том, что существует конфликт между библиотекой support-compat 28.0.0 и другой библиотекой, использующей androidx. Я сомневаюсь, что эта библиотека полос строится с AndroidXX. 'com.stripe: stripe-android: 8.5.0'
Вы можете решить эту проблему, перенеся ваше приложение на использование androidx вместо старых библиотек поддержки.
Прежде всего, это не объекты Microsoft Word - это UTF-8. Вы конвертируете их в объекты HTML.
Пифонический способ написать что-то вроде:
chr(0xe2) . chr(0x80) . chr(0x98)
будет выглядеть следующим образом:
'\xe2\x80\x98'
Но Python уже имеет встроенные функции для того типа преобразования, которое вы хотите выполнить:
def defang(string):
return string.decode('utf-8').encode('ascii', 'xmlcharrefreplace')
Это заменит коды UTF-8 в строка для символов типа '
с числовыми объектами типа «
.
Если вы хотите заменить эти числовые объекты именованными, где это возможно:
import re
from htmlentitydefs import codepoint2name
def convert_match_to_named(match):
num = int(match.group(1))
if num in codepoint2name:
return "&%s;" % codepoint2name[num]
else:
return match.group(0)
def defang_named(string):
return re.sub('&#(\d+);', convert_match_to_named, defang(string))
И используйте его так:
>>> defang_named('\xe2\x80\x9cHello, world!\xe2\x80\x9d')
'“Hello, world!”'
Чтобы завершить ответ, эквивалентный код вашего примера для обработки файла будет выглядеть примерно так:
# in Python, it's common to operate a line at a time on a file instead of
# reading the entire thing into memory
my_file = open("test100.html")
for line in my_file:
print defang_named(line)
my_file.close()
Обратите внимание, что этот ответ нацелен на Python 2.5; ситуация с Unicode кардинально отличается от Python 3+.
Я также согласен с приведенным ниже комментарием bobince: если вы можете просто сохранить текст в формате UTF-8 и отправить его с правильным типом содержимого и кодировкой, сделайте это; если вам нужно, чтобы он был в ASCII, придерживайтесь числовых сущностей - в действительности нет необходимости использовать именованные.
Лучше всего для очистки Word HTML использовать HTML Tidy , в котором есть специальный режим. Есть несколько оболочек Python , которые вы можете использовать, если вам нужно сделать это программно.
Код Python имеет тот же контур.
Просто замените все PHP-измы на Python-isms.
Начните с создания объекта File . Результатом file.read () является объект string . Строки имеют операцию замены.
Как сказал С. Лотт, код Python будет очень и очень похож - единственными отличиями по существу будет функция звонки / операторы.
Я не думаю, что Python имеет прямой эквивалент file_get_contents ()
, но, поскольку вы можете получить массив строк в файле, вы можете присоединить их к символам новой строки, как это:
sample = '\n'.join(open(test, 'r').readlines())
РЕДАКТИРОВАТЬ: не берите в голову, есть гораздо более простой способ: sample = file (test) .read ()
Замена строки почти такая же, как str_replace ()
:
sample = sample.replace(search, replace)
И вывод так же прост, как оператор print
:
print defang_word(sample)
Итак, как вы можете видеть, две версии выглядят почти одинаково.