我是 Python 的初学者,遇到了一些我无法解决的编码问题。
是)我有的:
电子表格中两列中的源句子及其各自的翻译;
包含句子和html标签的html代码
我正在尝试做的事情:使用 Python 正则表达式方法 - sub() 来查找英文句子并将其替换为各自的翻译句子。
例如: html代码中的三个句子 -Pumas是大型动物。它们在美国被发现。他们不吃草
我有 html 代码中每个句子的翻译。我想一次替换一个句子并保留 html 标签。通常我可以像这样使用 sub() 方法:
regex1 = re.compile(r'(\>.*)SOURCE_SENTENCE_HERE ?(.*\<)')
resultCode = regex1.sub(r'\1TRANSLATION_SENTENCE_HERE\2', originalHtmlCode)
我写了一个python脚本来做到这一点。我将 html 代码保存在一个 txt 文件中,并在我的 Python 代码中访问它(成功)。然后我创建一个字典来将源-目标对存储在上面提到的电子表格中(成功)。最后,我使用 rexgex sub() 方法来查找和替换 html 代码中的句子(失败)。由于某种原因,最后一部分根本不起作用。链接到我的 Python 代码- https://pastebin.com/ZSUNB4yg或以下:
import re, openpyxl, pyperclip
buynavFile = open('C:\\Users\\zs\\Documents\\PythonScripts\\buynavCode.txt')
buynavCode = buynavFile.read()
buynavFile.close()
wb = openpyxl.load_workbook('buynavSegments.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
segDict = {}
maxRow = sheet.max_row
for i in range(2, maxRow + 1):
segDict[sheet.cell(row=i, column=3).value] = sheet.cell(row=i, column=4).value
for k, v in segDict.items():
k = '(\\>.*)' + str(k) + ' ?(.*\\<)'
v = '\\1' + str(v) + '\\2'
buynavRegex = re.compile(k)
buynavResult = buynavRegex.sub(v, buynavCode)
pyperclip.copy(buynavResult)
print('Result copied to clipboard')
下面的错误信息:
回溯(最近一次通话最后):
文件“C:\Users\zs\Documents\PythonScripts\buynav.py”,第 20 行,在
buynavResult = buynavRegex.sub(v, buynavCode)
_subx 中的文件“C:\Users\zs\AppData\Local\Programs\Python\Python36\lib\re.py”,第 326 行
模板 = _compile_repl(模板,模式)
_compile_repl 中的文件“C:\Users\zs\AppData\Local\Programs\Python\Python36\lib\re.py”,第 317 行
返回 sre_parse.parse_template(repl, 模式)
文件“C:\Users\zs\AppData\Local\Programs\Python\Python36\lib\sre_parse.py”,第 943 行,在 parse_template
addgroup(int(this[1:]), len(this) - 1)
有人可以启发我吗?我真的很感激。
HUX布斯
相关分类