Как преобразовать прямые кавычки в фигурные кавычки в Python? - PullRequest
0 голосов
/ 26 октября 2019

Я должен заменить все прямые кавычки на фигурные ("").

Я использовал s.replace, чтобы заменить все прямые кавычки на фигурные, но все они в одном направлении. Я не знаю, как в кавычках идти в одном направлении перед словом, а в конце - в противоположном.

Пример: '" "o" "i" "' необходимо преобразовать в '“ “o” “i” ”'

Ответы [ 3 ]

0 голосов
/ 26 октября 2019

Вы можете использовать re и искать пары кавычек и заменять их.

>>> s = "\" \"o\" \"i\" \""
>>> s
" "o" "i" "
>>> re.sub(r'(\")(.?)(\")', '“\g<2>”', s)
“ ”o“ ”i“ ”
0 голосов
/ 11 ноября 2019

Это, кажется, работает очень хорошо:

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

import re

def convert_to_curly(string):
    """convert straight quotes to curly ones"""
    string = re.sub(r'\b"',r'”',string)   # closing double on word    
    string = re.sub(r'"\b',r'“',string)   # opening double on word
    string = re.sub(r'\b\'',r'’',string)  # closing single on word
    string = re.sub(r'\'\b',r'‘',string)  # opening single on word

    string = re.sub(r'([^\w\d\s:])"',r'\1”',string)  # closing double on punctuation
    string = re.sub(r'([^\w\d\s:])\'',r'\1’',string) # closing single on punctuation

    string = re.sub(r'\S\'\S',r'’',string)   # apostrophe can be virtually anywhere

    # FIXME: what about single and double quotes not next to word or punctuation? Pairs?

    return(string)
0 голосов
/ 26 октября 2019

Вы можете попробовать это (text ваша строка):

for i in range(text.count('"')/2+1) :
    text = text.replace( '"', 'open-quote', 1)
    text = text.replace( '"', 'close-quote', 1)

И все они будут заменены.

open-quote и close-quote используются для простогоудобочитаемость, замените ее нужными кавычками.

...