регулярное выражение python

#python

#python

Вопрос:

Я новичок в Python. У меня есть массив слов, и каждое слово должно быть проверено, чтобы увидеть, содержит ли оно какие-либо специальные символы или цифры. Если оно содержит so, то я должен пропустить это слово. Как мне это сделать?

Комментарии:

1. Как насчет предоставления нескольких примеров слов, специальных символов, которые вы хотите проверить, и того, как вы хотите, чтобы выглядел результат. Может быть, мы и хороши, но мы программисты, а не читатели мыслей.

2. Кроме того, это звучит так, как будто это может быть проблемой домашнего задания. Если это так, пожалуйста, пометьте его как таковое.

3. приветствие должно быть принято, приветствие1 не должно быть принято, ?приветствие2 не должно быть принято …. т. е. просто указано, что слова, которые не содержат никаких специальных символов или цифр, должны быть приняты

4. если вы считаете, что это проблема с домашним заданием, пожалуйста, не отвечайте на это … я просто обратился за помощью .. вот и все

5. То есть вы имеете в виду, что любые слова с неалфавитными символами должны быть удалены из массива (под которым, я полагаю, вы подразумеваете список Python)?

Ответ №1:

Обязательно ли это должно быть регулярное выражение? Если нет, вы можете использовать строковый метод isalpha().

Ответ №2:

В моем понимании проблема заключается в том, что вы хотите отбросить любые слова, содержащие неалфавитные символы. Попробуйте следующее:

 >>> array = ['hello', 'hello2', '?hello', '?hello2']
>>> filtered = filter(str.isalpha, array)
>>> print filtered
['hello']
  

Вы также могли бы записать его в виде списка для понимания:

 >>> filtered = [word for word in array if word.isalpha()]
>>> print filtered
['hello']
  

Ответ №3:

Если вы хотите исключить всего несколько символов, используйте черный список, в противном случае используйте белый список.

 import string
abadword="""aaaa
bbbbb"""
words=["oneGoodWord", "a,bc",abadword, "xxn",'123',"gone", "tab    tab", "theEnd.","anotherGoodWord"]

bad=list(string.punctuation) #string.punctuation='!"#$%amp;'()* ,-./:;<=>?@[\]^_`{|}~'
bad =['n','t','1'] #add some more characters you don't want
bad =['one'] #this is redundant as in function skip set(word) becomes a set of word's characters. 'one' cannot match a character.

print bad #bad = ['!', '"', '#', '$', '%', 'amp;', "'", '(', ')', '*', ' ', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\', ']', '^', '_', '`', '{', '|', '}', '~', 'n', 't', '1', 'one']

bad=set(bad)

def skip(word):
    return len(set(word) amp; bad)==0 #word has no characters in common with bad word

print "good words:"
print filter(skip,words) #prints ['oneGoodWord', 'gone', 'anotherGoodWord']