我有一个包含并行文本的文件:源文本和目标文本。从源文本中我提取了一些表达式,我想在源文本中替换这些表达式,但是使用不同的格式,例如使用方括号。
这是文件的一个例子
</seg>
<seg match="1-1" id="2">
<src>Difensori dei diritti umani e organizzazioni sono stati oggetto di crescenti intimidazioni e minacce in un clima di limitazione della libertà di espressione, che ha anche visto un giornalista incarcerato per diversi mesi.</src>
<tgt>تعرض عدد من المدافعين عن حقوق الإنسان والمنظمات المعنية بحقوق الإنسان للترهيب والتهديد بصورة متزايدة، وسط مناخ من القيود على حرية التعبير، شهد أيضاً الحكم بسجن أحد الصحفيين لعدة أشهر.</tgt>
</seg>
<seg match="1-1" id="3">
<src>Sono stati riportati casi di sgomberi forzati e violazioni dei diritti umani da parte della polizia, ma su scala minore rispetto agli anni precedenti.</src>
<tgt>ووردت أنباء عن حالات من الإجلاء القسري وانتهاكات حقوق الإنسان على أيدي الشرطة، وإن كان ذلك على نطاق أقل من مثيله في السنوات السابقة.</tgt>
</seg>
<seg match="1-1" id="4">
<src>Una rivolta carceraria nella Prigione centrale di Luanda ha determinato morti e feriti, sebbene le cifre a tal riguardo siano state contestate.</src>
<tgt>وأسفر تمرد للسجناء في سجن لواندا المركزي عن سقوط قتلى وجرحى، ولكن أعداد الضحايا كانت موضع خلاف.</tgt
这是我想在源文本中替换的表达式的一个例子
libertà di espressione, sgomberi forzati, rivolta carceraria
这是我使用的代码
ex = codecs.open('filedirectory','r',encoding='utf-8').read().split(',')
parallel_text = codecs.open('filedirectory', 'r', encoding='utf-8').read()
parallel = parallel_text.splitlines()
for line in parallel:
if line.startswith('<src>'):
source = line
for l in ex:
if l in source:
newcorpus= parallel_text.replace(l, "[" + l + "]")
print newcorpus
此代码提供了重复数据,并且在某些行中不会替换 有人可以帮忙吗?
答案 0 :(得分:0)
如果你没有转到像element tree这样的xml解析器,这可以让你从问题开始我能理解的内容:
# coding=utf-8
import codecs
import os
parallel_text = codecs.open('./1/filedirectory', 'r', encoding='utf-8').read()
parallel = parallel_text.splitlines()
to_be_replaced = [
u"libertà di espressione",
u"sgomberi forzati",
u"rivolta carceraria"
]
result = []
for line in parallel:
if line.startswith('<src>'):
for s in to_be_replaced:
if s in line:
line = line.replace(s, '[' + s + ']')
result.append(line)
print os.linesep.join(result)