Если между двумя разными символами в текстовом файле, Python - PullRequest
2 голосов
/ 07 марта 2019

Я в основном пытаюсь использовать 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)

Конечно, МЕЖДУ нереальным, вот что я ищу.Возможно, я не подхожу к проблеме правильно, поэтому я также открыт для любых альтернативных идей!Я благодарен за помощь, спасибо!

edit: желаемые выходные группы объединяют именные и предлогические фразы в разделах {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 Ответ

2 голосов
/ 07 марта 2019

Файл, который вы дали, в формате JSON , что означает, что его можно легко проанализировать с помощью встроенной библиотеки Python 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

Конечно, если вы не хотите или можете анализировать этот файл как json, вы можете использовать re library :

import re
to_process = re.findall("{s:\"(.+)}\"", yourtext)

Чтобы узнать или попрактиковаться в регулярных выражениях, посмотрите на это: https://regexr.com/

...