Home > Net >  How to remove English characters from a text file in python?
How to remove English characters from a text file in python?

Time:09-30

Very new to python, I'm trying to clean the text from any non-Arabic characters, I tried regex functions but with no success. This is my code

# load text
filename = '/content/drive/MyDrive/Colab Notebooks/ArabicKidsStories.txt'
file = open(filename,'rt')
text = file.read()
file.close()
import re
text = re.sub('(@[A-Za-z0–9_] )|[^\w\s]|#|http\S ', '', text) # cleaning up non arabic characters
print (text)

This is a sample of the output

doc idfile22193467 filename01 parent_folderweb1 url
p تفقدت نظارتي  حين استيقظت صباحا  فلم أجدها في مكانها  وبحثت عنها في كل مكان  دون أن أعثر لها على أثر  يا إلهي  كيف سأخرج اليوم من البيت  وأواجه النهار  p
p وتناهى إلي من الخارج  صوت نقار الخشب  فوق جذع شجرة قريبة فأسرعت إلى الباب  وفتحته  وإذا ضوء النهار يبهر بصري  فأغلقت عيني  وهتفت  أيها النقار  أين أنت  p
p وحاولت عبثا أن أفتح عيني  وأنا أقول  عفوا  لا أستطيع أن أفتح عيني  إن الضوء يعميني  p
p فقال نقار الخشب  هذا طبيعي  يا عزيزتي  فأنت لم تضعي نظارتك الشمسية  p
p وتراجعت قليلا  وقلت  لقد اختفت نظارتي  p
p فتساءل نقار الخشب  اختفت  ماذا تقولين  p
p وبدل أن أجيبه  قلت  أرجوك  ابحث لي عن نظارتي  إنني لا أستطيع الخروج من دونها  p
p ولاذ نقار الخشب لحظة  ثم قال  حسن  ابقي أنت في البيت  وسأبحث لك أنا عنها  p
p ومضى نقار الخشب  فأغلقت الباب والنافذة  وقبعت في الظلام  يا للغرابة  إنني أرى في الليل أيضا  أوه  كلا  إنني أحب النهار  وأحبذ أن أطير دوما في النور مع رفاقي  إنني لا أحب الليل  ولا أريد أن يكون الظلام عالمي  ترى أين اختفت هذه النظارة اللعينة  p
p  2  p
p ـــــــــــــ p
p عاد نقار الخشب متعبا  قبل المساء  وقال لي  آسف  يا عزيزي  سألت عن نظارتك الطيور جميعا  لكن أحدا منهم لم يرها  p
p فأطرقت برأسي برهة  ثم قلت  أشكرك  يا عزيزي  سأبحث عنها بنفسي ليلا  p
p واتسعت عينا نقار الخشب دهشة  وقال  ليلا  p
p وقبل أن أجيبه  مضى على عجل  وهو يقول  عفوا  صغاري ينتظرونني الآن  إلى اللقاء  p
p حل الليل  فمضيت إلى بيت صديقي الأرنب  وطرقت بابه  وخرج الأرنب  وهو يئن  فقلت له  لقد فقدت نظارتي  يا صديقي  فهل رأيتها  p
p فأجاب الأرنب  وهو يئن  لم أخرج اليوم من البيت  إنني مريض  p
p واعتذرت منه قائلة  عفوا  يا صديقي  لم أعرف بمرضك  p

Another last thing, how to generate the Vertical File (ArabicKidsStories_V1.vert) with each word on a separate line. Meaning that a word should consist only of letters, whenever I encounter a character that is not a letter I must start a new word. any help will be appreciated. Thanks in advance.

CodePudding user response:

You have two problems with your regular expression. First, the "@" symbol must be in the [range], not outside. Second, you have a wrong type of dash between 0 and 9. Here is a corrected expression. It works:

'([@A-Za-z0-9_] )|[^\w\s]|#|http\S '

CodePudding user response:

Try this:

text = re.sub('[a-zA-Z0-9_]|#|http\S ', '', text)

I just remove the [^\w\s] and it removes all alphanumeric underscores without removing the Arabic text

CodePudding user response:

As far as I understood you. You want just to clean non-arabic chars (so chars like 1 @ ? gonna not be deleted).

If you want another char to be deleted just add it to charsotdelete.

If you have any questions let me know.

charstodelete = 'azertyuiopqsdfghjklmwxcvbn'
filename = '/content/drive/MyDrive/Colab Notebooks/ArabicKidsStories.txt'
file = open(filename,'r')
text = file.read()
file.close()
output_text = ''

# It's all about this
for char in text:
    if char in charstodelete or char in chartodelete.upper():
        continue
    else:
        output_text  = char


outputfile = open('/content/drive/MyDrive/Colab Notebooks/output.txt','w')
outputfile.write(output_text)
outputfile.close()

EDIT: Reg Ex are a bit of pain to get use to them if you are a beginner as you said. I recommend to use a code like that instead of Reg Ex

  • Related