У меня есть сложный сценарий использования регулярных выражений в Python.

Вот пример:

Вход:

text = """4056,"Wholesale, Operations","Performed some ""activities"", at 10 am. ",19/12/2022,,"a,B" """

Ожидаемый результат:

4056,DUMMY,DUMMY,19/12/2022,,DUMMY

По сути, я хочу заменить все в " " на DUMMY. Однако я хотел бы экранировать текст, заключенный в "" "". Как видно из примера, "Performed some ""activities"", at 10 am. " следует заменить целиком.

Какие-нибудь советы? Очень признателен!

0
QPeiran 30 Окт 2023 в 05:34
Вы можете попробовать что-то вроде "(?:"".*?""|[^"])*"
 – 
Hao Wu
30 Окт 2023 в 05:37
1
Это не будет соответствовать "fo""o"; падение .*?"": "(?:[^"]|"")*".
 – 
InSync
30 Окт 2023 в 05:41
Это сработало, спасибо, ребята
 – 
QPeiran
30 Окт 2023 в 06:12

2 ответа

Вы можете добиться этого, используя регулярные выражения в Python. В частности, вы можете использовать модуль re для поиска и замены текста, заключенного в двойные кавычки, обеспечивая при этом экранирование двойных кавычек.

import re

text = """4056,"Wholesale, Operations","Performed some ""activities"", at 10 am. ",19/12/2022,,"a,B" """

# Define a regular expression pattern to match text within double quotes
pattern = r'(".*?(?:""|[^"])*")'

# Define a function to replace the matched text with 'DUMMY'
def replace_match(match):
    return 'DUMMY'

# Use re.sub() to replace the matched text
result = re.sub(pattern, replace_match, text)

print(result)
0
xapi 30 Окт 2023 в 06:52

Этого можно добиться, определив шаблон и заменив его фиктивными.

import re

text = """4056,"Wholesale, Operations","Performed some ""activities"", at 10 am. ",19/12/2022,,"a,B" """
pattern = r'(".*?(?:""|[^"])*")'
def replace_match(match):
    return 'DUMMY'
result = re.sub(pattern, replace_match, text)
print(result)

Выход:

4056,DUMMY,DUMMY,19/12/2022,,DUMMY 
0
Mahboob Nur 30 Окт 2023 в 07:01