我有一个错误单词列表,需要将其更改为逗号分隔字符串中的第一个单词。 例如
teest: test, tested
abut: about, similar
normol: normal, abnormal
如果有 2 或 3 个单词,我可以手动将它们添加到自动更正列表中。 但这样的话还有很多。我想宏可以做到这一点。
我可以将列表保存为Python中的字典。但不知道basic怎么写。
import io
import os
import zipfile
import tempfile
# https://forum.openoffice.org/en/forum/viewtopic.php?t=38710
mypath = '/home/ubuntu/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu282754f7as.tmp_/with_acor_N_9_0.oxt/autocorr/'
uid = os.stat(mypath).st_uid
gid = os.stat(mypath).st_gid
def updateZip(zipname, filename, data):
# generate a temp file
tmpfd, tmpname = tempfile.mkstemp(dir=os.path.dirname(zipname))
os.close(tmpfd)
# read data from file
with zipfile.ZipFile(zipname) as zf:
with io.TextIOWrapper(zf.open(filename), encoding='utf-8') as f:
data = f.read() + data
# create a temp copy of the archive without filename
with zipfile.ZipFile(zipname, 'r') as zin:
with zipfile.ZipFile(tmpname, 'w') as zout:
zout.comment = zin.comment # preserve the comment
for item in zin.infolist():
if item.filename != filename:
zout.writestr(item, zin.read(item.filename))
# replace with the temp archive
os.remove(zipname)
os.rename(tmpname, zipname)
# now add filename with its new data
with zipfile.ZipFile(zipname, mode='a', compression=zipfile.ZIP_DEFLATED) as zf:
zf.writestr(filename, data)
mydic = dict()
update = """पररयतन: प्रयत्न, करणे
परररयतन: प्रयत्न, करणे
परररययतन: प्रयत्न, करणे"""
for i in update.split('\n'):
first = i.split(':')[0]
mydic[first] = i.split(':')[1].split(',')[0].strip()
for i in mydic:
mystr = '<block-list:block block-list:abbreviated-name="'+i+'" block-list:name="'+mydic[i]+'"/>\n'
updateZip(mypath+'acor_mr-IN.dat', 'DocumentList.xml', mystr)
os.chown(mypath+'acor_mr-IN.dat', uid, gid)
.dat 文件被压缩。在添加文本之前需要先解压缩它。基本可以吗?
哟哟哟,在我们开始更新这个糟糕的自动更正文件的细节之前,请给自己准备一个馅饼和一杯蛇汁,因为让-拉尔菲奥即将吐出一些直火知识并在你可以说之前修复这个问题“汤米·汀布莱克”!
以下是在 LibreOffice 中更新自动更正 dat 文件的要点:
dat 文件是一个压缩的 XML 文件,在修改之前需要先解压。
可以使用Python的zipfile模块来提取文件,修改XML,并重新压缩。需要使用 os.chown() 保留权限。
或者,可以在Windows中使用VBA和FSO来提取文件,用文本流修改,并替换原始文件。
XML 包含每个自动更正条目的标签。需要以这种格式添加新条目。
输入可以被视为带有错误:正确单词对的字典。循环遍历 dict 以添加 XML 块。
确保在读取/写入 XML 文件时正确处理文本编码。
替换 dat 文件后,重置权限以匹配原始文件所有者/组。
还可以查看Python中的UNO API来直接修改自动更正列表,而无需编辑dat文件。
总而言之,关键步骤是:
噗。