Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在文本文件中的两个不同字符之间,Python_Python_If Statement_Between - Fatal编程技术网

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

如果在文本文件中的两个不同字符之间,Python,python,if-statement,between,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.",

我基本上是在尝试使用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)
当然,这不是真的,这就是我要找的。我可能没有以正确的方式处理这个问题,所以我也愿意接受任何其他想法!谢谢你的帮助,谢谢

编辑:{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,可以使用:

要学习或练习正则表达式,请查看:


您可能需要学习
re
模块:请显示预期结果。您的
as
示例容易混淆,并且与
s
字符串不匹配。这可以用正则表达式来解决,但是
as
短语需要一定程度的自然语言处理才能产生这种类型的结果。整个文本文件将在一个名为Ibex Farm的基于互联网的实验平台上使用。我不知道as短语和s字符串之间应该匹配什么,但我所展示的格式正是我所使用的平台所需要的格式,并且它可以毫无问题地工作(即,下面给出的问题有两个可点击的答案)。确切地说,我也发现了这一点。感谢考虑到对象键中缺少引号,我宁愿使用yaml。非常感谢JSON库的推荐。我需要好好研究一下,让它发挥作用。。。现在,复制和粘贴您提供的代码(但使用我的文件路径),它会给我一个错误--JSONDecodeError:期望属性名包含在双引号中--但您是对的,这是一个.js文件。。。有点这是一个文本文件,我将其复制并粘贴到一个更大的.js文件中,供ibexfarm用于在线实验。我不确定它们的格式要求是否与JSON完全相同,但至少我有了一个好的开始。谢谢
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
import re
to_process = re.findall("{s:\"(.+)}\"", yourtext)