2015-04-02 2 views
5

У меня есть арабская строка с английским текстом и пунктуациями. Мне нужно фильтровать арабский текст, и я попытался удалить пунктуации и английские слова, используя жало. Однако я потерял промежуток между арабскими словами. Где я ошибаюсь?Как удалить английский текст из арабской строки в python?

import string 
exclude = set(string.punctuation) 

main_text = "وزارة الداخلية: لا تتوفر لدينا معلومات رسمية عن سعوديين موقوفين في ليبيا http://alriyadh.com/1031499" 
main_text = ''.join(ch for ch in main_text if ch not in exclude) 
[output after this step="وزارة الداخلية لا تتوفر لدينا معلومات رسمية عن سعوديين موقوفين في ليبيا httpalriyadhcom1031499]" 
n = filter(lambda x: x not in string.printable, n) 
print n 
وزارةالداخليةلاتتوفرلدينامعلوماترسميةعنسعوديينموقوفينفيليبيا 

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

ответ

5

Вы можете сохранить пробелы в строке с помощью

n = filter(lambda x: True if x==' ' else x not in string.printable , main_text) 

или

n = filter(lambda x: x==' ' or x not in string.printable , main_text) 

Это будет проверить, если символ пробел, если нет, то он будет проверять, если это версия для печати.

4

Вы можете остановить его удаление любых пробелов следующим образом:

n = filter(lambda x: x in string.whitespace or x not in string.printable, n) 
Смежные вопросы