python - регулярное выражение для символов "° F" или "° C" и символов "-40"

python regex

56 просмотра

1 ответ

В Python я пытаюсь заменить текстовый файл следующим образом:

İmparatorluk zirvesini 15 ve 17'nin arasında, özelikle I. Süleyman döneminde 10.000'lerde yaşadı.

->

"İmparatorluk" "zirvesini" "15" "ve" "17'nin" "arasında", "özelikle" "I." "Süleyman" "döneminde" "10.000'lerde" "yaşadı" "."

С помощью следующего кода я могу сделать преобразование выше.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re, io, os

def create_data(txt_file):
        with io.open (txt_file, "r", encoding="utf-8") as myfile:
                text=myfile.read()

        replacer = re.compile(r"([IVXLCDM]+\.|-[\d\.-]+(?:'\w+)?|[\w'-]+|[.,!?;()%])", re.UNICODE)

        output_text = replacer.sub(r'"\1"', text).replace('""','" "')

        file_name = os.getcwd() + "/" + txt_file[:-4] + ".data"
        print file_name
        text_file = open(file_name, "w")
        text_file.write(output_text.encode('utf8'))
        text_file.close()

Но для другого текста;

Do Anu Anadolu'da sıcaklıklar −30 ° C ve −40 ° C'ye (−22 ° F ve −40 ° F) Кадар дюбелир ве карылы в азиате 120 лет назад.

преобразование происходит следующим образом:

"Doğu" "Anadolu'da" "sıcaklıklar" - "30" ° C "" ve "-" 40 "°" C'ye "" ("-" 22 "°" F "" ve "-" 40 " ° "F" ")" "kadar" "düşebilir" "ve" "kar" "yılın" "en" "az" "120" "günü" "yerde" "kalır" "."

Но я хочу, чтобы преобразование происходило следующим образом:

"Doğu" "Anadolu'da" "sıcaklıklar" "-30" "° C" "ve" "−40" "° C'ye" "(" "-22" "° F" "ve" "−40" "° F" ")" "kadar" "düşebilir" "ve" "kar" "yılın" "en" "az" "120" "günü" "yerde" "kalır" "."

Как я могу исправить свой код или регулярное выражение для достижения этого?

Спасибо,

Автор: yusuf Источник Размещён: 08.11.2019 11:10

Ответы (1)


1 плюс

Решение

Regex: ^|$|будет соответствовать началу строки, концу строки или одиночным пробелам. Вы можете использовать это, чтобы разбить строку, а затем соединить ее с необходимыми кавычками.

Вот код, который я бы использовал для JavaScript; Я надеюсь, что вы можете понять, как сделать то же самое в Python.

"\"" + string.split(new RegExp("^|$| ", "g")).join("\" \"") + "\"";
Автор: Whothehellisthat Размещён: 20.08.2016 12:07
Вопросы из категории :
32x32