我基本上尝试使用python进行查找和替换,但是它只适用于“{s:”和后面的“}”之间的字符串。我有一个很长的文本文件,其中包含以下许多内容:
["c", "DashedSentence", {s: "Yo limpio mi cuarto todos los sábados."},
"Question", {q: "¿Cuándo limpio mi cuarto?",
as: ["Todos los sábados.",
"Todos los domingos."]}],
["c", "DashedSentence", {s: "Nosotros contestamos el correo cada semana."},
"Question", {q: "¿Con qué frecuencia contestamos el correo?",
as: ["Cada semana.",
"Cada dos semanas."]}],
最后,我希望通过“s:”部分中的下划线将短语组合在一起,将“mi”替换为“mi_”以产生“mi_cuarto”,类似于“los”“el”...以及更多不在给定的例子中。
到目前为止我只有:
s = open("stimuli.txt").read()
word = [' mi ','los ']
phrase = [' mi_',' los_']
for i in range(len(word)):
if BETWEEN "{s:" and "},":
s = s.replace(word[i],phrase[i])
f = open("stimuli_phrases.txt", 'w')
f.write(file)
当然,BETWEEN不是真的,这就是我在寻找的东西。我可能没有以正确的方式解决问题,所以我也对任何其他想法持开放态度!感谢您的帮助,谢谢!
编辑:所需的输出组在{s:}部分中包含名词短语和介词短语,如下所示:
["c", "DashedSentence", {s: "Yo limpio mi_cuarto todos_los_sábados."},
"Question", {q: "¿Cuándo limpio mi cuarto?",
as: ["Todos los sábados.",
"Todos los domingos."]}],
["c", "DashedSentence", {s: "Nosotros contestamos el_correo cada_semana."},
"Question", {q: "¿Con qué frecuencia contestamos el correo?",
as: ["Cada semana.",
"Cada dos semanas."]}],
你给的文件是JSON formatted,这意味着它可以很容易地用内置的python json library解析:
import json
with open("/path/to/your/file", "r") as f:
data = json.load(f)
for item in data:
try:
s = item['s']
except (TypeError, KeyError):
pass
当然,如果您不想或可以将此文件解析为json,则可以使用re library:
import re
to_process = re.findall("{s:\"(.+)}\"", yourtext)
要学习或练习正则表达式,请查看它们:qazxsw poi