Я пытаюсь преобразовать строки в файле RTF в последовательность строк в кодировке Юникод, а затем выполнить сопоставление регулярных выражений в строках.(Мне нужно, чтобы они были в кодировке Unicode, чтобы я мог выводить их в другой файл.)
Однако мое сопоставление с регулярным выражением не работает - я думаю, потому что они не преобразуются в Юникод должным образом.
Вот мой код:
usefulLines = []
textData = {}
# the regex pattern for an entry in the db (e.g. SUF 76,22): it's sufficient for us to match on three upper-case characters plus a space
entryPattern = '^([A-Z]{3})[\s].*$'
f = open('textbase_1a.rtf', 'Ur')
fileLines = f.readlines()
# get the matching line numbers, and store in usefulLines
for i, line in enumerate(fileLines):
#line = line.decode('utf-16be') # this causes an error: I don't really know what file encoding the RTF file is in...
line = line.decode('mac_roman')
print line
if re.match(entryPattern, line):
# now retrieve the following lines, all the way up until we get a blank line
print "match: " + str(i)
usefulLines.append(i)
На данный момент, это печатает все строки, но ничего не печатает с соответствием - хотя оно должно совпадать.Кроме того, по какой-то причине строки печатаются с «/ par» в начале.Когда я пытаюсь распечатать их в выходной файл, они выглядят очень странно.
Отчасти проблема в том, что я не знаю, какую кодировку указать.Как я могу это выяснить?
Если я использую entryPattern = '^.*$'
, тогда я получаю совпадения.
Может кто-нибудь помочь?