регулярное выражение в Python для удаления запятых и пробелов - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть строка с несколькими запятыми и пробелами в качестве разделителей между словами.Вот несколько примеров:

ex #1: string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'  
ex #2: string = 'word1         word2       word3'  
ex #3: string = 'word1,word2,word3,'  

Я хочу использовать регулярное выражение для преобразования любого из 3 приведенных выше примеров в «word1, word2, word3» - (Примечание: после последнего слова в результате нет запятой).

Я использовал следующий код:

import re
input_col = 'word1    ,   word2     , word3,    '
test_string = ''.join(input_col)
test_string = re.sub(r'[,\s]+', ' ', test_string)
test_string = re.sub(' +', ',', test_string)
print(test_string)  

Я получаю вывод как «word1, word2, word3,».В то время как я на самом деле хочу "word1, word2, word3".Без запятой после слова 3.

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

Ответы [ 4 ]

0 голосов
/ 28 февраля 2019

вы можете использовать разбиение для создания массива и фильтрации len <1 массив </p>

import re
s='word1    ,   word2     , word3,    '
r=re.split("[^a-zA-Z\d]+",s)
ans=','.join([ i for i in r if len(i) > 0 ])
0 голосов
/ 28 февраля 2019

Вы можете просто использовать [ ]+ для обнаружения лишних пробелов и ,\s*$ для обнаружения последней запятой.Затем вы можете просто заменить [ ]+,[ ]+ на , и последнюю запятую пустой строкой

import re
input_col = 'word1    ,   word2     , word3,    '
test_string = re.sub('[ ]+,[ ]+', ', ', input_col) # remove extra space
test_string = re.sub(',\s*$', '', test_string) # remove last comma
print(test_string)
0 голосов
/ 28 февраля 2019

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

string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'
parts = re.split(",*\s*", string)
sep = ','
output = re.sub(',$', '', sep.join(parts))
print(output

word1,word2,word3

Обратите внимание, что я в последний раз вызываю re.sub, чтобы удалить возможную конечную запятую.

0 голосов
/ 28 февраля 2019

Как насчет добавления следующего предложения в конец вашей программы:

re.sub(',+$','', test_string)

, который может удалить запятую в конце строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...