Удалить последние специальные символы строк в списке - PullRequest
0 голосов
/ 15 марта 2019

У меня есть массив со словами, некоторые заканчиваются специальными символами.Я хотел бы удалить все специальные символы в конце слов.Есть ли элегантный способ сделать это?

aArray=["palabra...","algo,.", "si ...", "onomatopeña", "asi;","www.google.com"]

вывод:

aArray=["palabra","algo", "si", "onomatopeña", "asi","www.google.com"]

Я пытался это:

rxx = re.compile(r'(.*)([.,]{2,})')  # Extend [.,] as needed; {2,} means >= 2
aArray=["encontarla....", "esta,.", "sr.", "texto", 'www.google.com', 'encontrarla.']
aArray=([rxx.sub(lambda m: m.group(1), word) for word in a])

Я думаю, что я не понял ввсе.Например, строка www.google.com в качестве URL-адреса не должна уничтожать точки.

Ответы [ 3 ]

2 голосов
/ 15 марта 2019

Чтобы удалить все несловарные символы только с конца строки:

import re

aArray = ["palabra...", "algo,.", "si ...", "onomatopeña", "asi;", "www.google.com"]

aArray = [re.sub(r'\W+$', '', s) for s in aArray]

Результат:

['palabra', 'algo', 'si', 'onomatopeña', 'asi', 'www.google.com']

Пояснение:

\W+ соответствует любому количеству несловарных символов, а $ привязывает совпадение к концу строки.

2 голосов
/ 15 марта 2019

Вы можете использовать регулярное выражение для этого. Хотя ваш вопрос не очень ясен в отношении определения «специальных символов», но вот пример кода, который дает вывод, который вы опубликовали:

import re

aArray=["palabra...","algo,.", "si ...", "onomatopeña", "asi;", "www.google.com"]

for i in range(len(aArray)):
    aArray[i] = re.sub(r'[.,;]+$', '', aArray[i]).strip()

Выход:

['palabra', 'algo', 'si', 'onomatopeña', 'asi', 'www.google.com']

Если под «специальным символом» вы подразумеваете не алфавитно-цифровую, то вы можете использовать это:

import re

aArray=["palabra...","algo,.", "si ...", "onomatopeña", "asi;", "www.google.com"]

for i in range(len(aArray)):
    aArray[i] = re.sub(r'[^\w]+$', '', aArray[i]).strip()

Выход:

['palabra', 'algo', 'si', 'onomatopeña', 'asi', 'www.google.com']

Также обратите внимание на strip(), это там, чтобы удалить завершающие пробелы

UPDATE

$ в конце регулярных выражений означает, что мы ожидаем, что этот шаблон будет в конце, и после него ничего не должно быть. Так что он может обрабатывать ваши URL-адреса.

1 голос
/ 15 марта 2019

Это может быть сделано с использованием списка и filter, без необходимости использовать регулярное выражение:

>>> aArray=["palabra...","algo,.", "si ...", "onomatopeña", "asi;","www.google.com"]
>>> [s.rstrip('.;, ') for s in aArray]
['palabra', 'algo', 'si', 'onomatopeña', 'asi', 'www.google.com']

Примечание. Я предполагаю, что '.;, ' - это все "специальные символы, на которые вы ссылаетесь.

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