Найти верхний индекс TM в Python 2 с помощью регулярных выражений - PullRequest
0 голосов
/ 05 июня 2018

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

import re
path='G:\python_code\A.txt'
f_general=open(path, 'r')
special=re.findall(r'\U2122',f_general.read())
print(special)

, но он ничего не печатает.Как я могу это исправить?

1 Ответ

0 голосов
/ 05 июня 2018

Возможно, это связано с кодировкой вашего файла.Попробуйте это:

import re

path = "g:\python_code\A.txt"
f_general=open(path, "r", encoding="UTF-16")
data = f_general.read()
special=re.findall(chr(8482), data)
print(special)
print(chr(8482))

Примечание. Я использую десятичное значение для торговой марки.Это сайт, который я использую: https://www.ascii.cl/htmlcodes.htm

Итак, откройте файл, который у вас есть в блокноте.Сделайте save as и выберите кодировку unicode, и все это должно работать.Работа с расширенной ASCII может быть хлопот.Я использую Python 3.6 , но я думаю это все равно должно работать в 2.x

Обратите внимание, что когда он печатает chr(8482) в командной строке, он, вероятно, будетпросто будьте T, по крайней мере, это то, что я получаю в Windows.

update

Попробуйте это для Python 2, и это должно захватить слово перед товарным знаком:

import re

with open("g:\python_code\A.txt", "rb") as f:
    data = f.read().decode("UTF-16")
regex = re.compile("\S+" + chr(8482))
match = re.search(regex, data)
if match:
    print (match.group(0))
...