Как сопоставить специфические символы и исключить их, когда они следуют шаблону - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я пытаюсь очистить некоторые данные в csv на python. Но у меня есть проблема с моими кавычками в моем CSV, поэтому я надеюсь, что вы можете помочь мне исправить это с помощью регулярных выражений.

Одна строка моего CSV выглядит так:

"""My name";"";"is";""Hello ; World"";"";

Можно ли сопоставить несколько кавычек, но сделать так, чтобы они не совпадали с кавычками между точками с запятой

"" -> match

""" -> match

;""; -> not match

У кого-нибудь есть решение моей проблемы? Спасибо

С наилучшими пожеланиями.

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Использование позитивных взглядов вперед и назад:

import re

s='"""My name";"";"is";""Hello ; World"";"";'                          

In: re.sub(r'(?<=[^;"])"+|"+(?=[^;"])',r'@',s)                             
Out: '@My name@;"";@is@;@Hello ; World@;"";'

Edit:

(?<=[^;"])"+    matches quotes not preceeded by other quotes or ;
 "+(?=[^;"])    matches quotes not followed by other quotes or ;
0 голосов
/ 07 мая 2019

Это похоже на работу:

ln = '"""My name";"";"is";""Hello ; World"";"";'
ln_arr = ln.split(";")
print(ln_arr)
for i, val in enumerate(ln_arr):
  if val != '""':
    ln_arr[i] = ln_arr[i].replace('""','')
print(ln_arr)
ln = ';'.join(ln_arr)
print(ln)

Выход:

['"""My name"', '""', '"is"', '""Hello ', ' World""', '""', '']
['"My name"', '""', '"is"', 'Hello ', ' World', '""', '']
"My name";"";"is";Hello ; World;"";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...