如果在文本文件中的两个不同字符之间,则使用Python

时间:2019-03-07 14:01:27

标签: python if-statement between

我基本上是试图使用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."]}],

1 个答案:

答案 0 :(得分:2)

您提供的文件为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)
  

要学习或练习正则表达式,请看那里:https://regexr.com/