使用python替换PO文件数据中的msgstr的正则表达式
我有列表使用python替换PO文件数据中的msgstr的正则表达式,python,regex,po-file,Python,Regex,Po File,我有列表content=['x','y','z'] .po文件内容: msgid 'abc' msgstr '' msgid 'def' msgstr '' msgid 'ghi' msgstr '' with io.open('file.po, 'r', encoding='utf-8') as pofile: filedata = pofile.read() 我需要如下输出: msgid 'abc' msgstr 'x' msgid 'def' msgstr 'y' ms
content=['x','y','z']
.po文件内容:
msgid 'abc'
msgstr ''
msgid 'def'
msgstr ''
msgid 'ghi'
msgstr ''
with io.open('file.po, 'r', encoding='utf-8') as pofile:
filedata = pofile.read()
我需要如下输出:
msgid 'abc'
msgstr 'x'
msgid 'def'
msgstr 'y'
msgid 'ghi'
msgstr 'z'
编辑:
msgid 'abc'
msgstr ''
msgid 'def'
msgstr ''
msgid 'ghi'
msgstr ''
with io.open('file.po, 'r', encoding='utf-8') as pofile:
filedata = pofile.read()
因此,filedata具有PO文件的所有内容,该解决方案使用内置的
iter()
函数和re.sub()
函数:
import re
content = ['x', 'y', 'z']
po_data = '''
msgid 'abc'
msgstr ''
msgid 'def'
msgstr ''
msgid 'ghi'
msgstr ''
'''
content_it = iter(content) # constructing iterator object from iterable
result = re.sub(r'(msgstr )\'\'', lambda m: "%s'%s'" % (m.group(1), next(content_it)), po_data)
print(result)
输出:
msgid 'abc'
msgstr 'x'
msgid 'def'
msgstr 'y'
msgid 'ghi'
msgstr 'z'
可能需要更多地解释数据之间的关系。您希望根据顺序编写条目,或者“abc”和“x”之间是否存在某种关系,例如。无论如何,如果您想要订购(而不是正则表达式),这里是: 在位编辑、更改文件(确保保存文件副本)
通过一个步骤是不可能的,您需要一个循环。我将PO文件数据放入var中,需要替换该var中的内容,但我不知道如何使用python替换确切位置的数据re@revo告诉我如何实现用循环替换或将数据放入PO文件内容?@NeErAjKuMaR这是一个字符串吗?查找所有匹配项的数目。在该文件上实现for循环以限制迭代次数,并在内部执行
re.sub
。fh是作为单个字符进行迭代的,而不是作为一条直线。我需要覆盖同一文件上的内容,而不是新文件上的内容。我有一些不同语言的字符串,例如:阿拉伯语,它们会导致错误。独角兽。