Простейшее решение, которое фильтрует пространство и специальные символы:
filter(None,re.split(r'\W|\d', bleh))
Regex
Регулярное выражение выражение '\ W' в основном означает 'поймать' любой не-словные символы, а \ d означает, что вы хотите поймать числовые символы. Так что если у вас есть такое слово, как:
банан "* # 12312 Сахар
Это поймает полные символы без слов:
" * # 12312
Функция разделения функций Regex
Этот код:
re.split(r'\W|\d', bleh)
Сходно расколоть, что вы использовали, за исключением того, что это круто, потому что это регулярное выражение с приводом, который дает вам некоторые удивительные возможности.
Фильтр Функция
буквально фильтрует список из вещи вы не хотите. Так, в этом коде, где Foo является список, где Foo = [ "A", "B", "", "D"]:
filter(None,foo)
Это в основном выглядит внутри списка и найти экземпляры ' None "и поп/удалить его из списка.
Полный код:
import re
bleh = """"car */12314 34234 /*one 123123lemon grass
food accelerate
"""
print filter(None,re.split(r'\W|\d', bleh))
Результат:
['car', 'one', 'lemon', 'grass', 'food', 'accelerate']
с кодом
import re
def readWords(x,y):
with open(x,'r') as f:
for line in f:
//Append to y
y += filter(None,re.split(r'\W|\d', line))
firstFile = sys.argv[1]
firstList = []
readWords(firstFile, firstList)
Regex бы лучше здесь. Вы можете использовать условие '\ s' для захвата специальных символов. – Adib
@Adib '\ s' захватывает пробелы. –
@Scherf Какие персонажи для вас особенные? –