|
سلام
من برنامه ای با Python نوشتن که توی فایل متنی جستجو کرده و کاراکترهای فارسی را پیدا کرده و با معادل یونیکد آن جایگزین می کند ولی مشکل آن اینه که coding خواندن فایل ورودی درست نیست و به همین خاطر ما در خروجی هیچ متنی نداریم ، اگر کسی می تونه برای اصلاح آن کمک کنه کد من به این شکله :
# -*- coding: ascii -*-
infile = open('C:\\test\\messages.properties')
outfile = open('C:\\test\\messages1.properties', 'w')
replacements = {'پ':'\u067e', 'چ':'\u0686','ج':'\u062c', 'ح':'\u062d','خ':'\u062e', 'ه':'\u0647','ع':'\u0639', 'غ':'\u063a','ف':'\u0641', 'ق':'\u0642','ث':'\u062b', 'ص':'\u0635','ض':'\u0636', 'گ':'\u06af','ک':'\u06a9', 'م':'\u0645','ن':'\u0646', 'ت':'\u062a','ا':'\u0627', 'ل':'\u0644','ب':'\u0628', 'ي':'\u06cc','س':'\u0633', 'ش':'\u0634','و':'\u0648', 'ئ':'\u0626','د':'\u062f', 'ذ':'\u0630','ر':'\u0631', 'ز':'\u0632','ط':'\u0637', 'ظ':'\u0638','ژ':'\u0698', 'آ':'\u0622','ي':'\u064a', '؟':'\u061f'}
f = (i for i in infile if '\t' in i.strip())
for line in f:
for src, target in replacements :
line = line.replace(src, replacements)
outfile.write(line)
infile.close()
outfile.close()
سلام مجبور شدم بعضی قسمت ها رو تغییر بدم. کد زیر کار می کنه. امتحان کردم.
# -*- coding: utf-8 -*-
infile = open('messages.in')
outfile = open('messages.out', 'w')
replacements = {'پ':'\u067e', 'چ':'\u0686','ج':'\u062c', 'ح':'\u062d','خ':'\u062e', 'ه':'\u0647','ع':'\u0639', 'غ':'\u063a','ف':'\u0641', 'ق':'\u0642','ث':'\u062b', 'ص':'\u0635','ض':'\u0636', 'گ':'\u06af','ک':'\u06a9', 'م':'\u0645','ن':'\u0646', 'ت':'\u062a','ا':'\u0627', 'ل':'\u0644','ب':'\u0628', 'ي':'\u06cc','س':'\u0633', 'ش':'\u0634','و':'\u0648', 'ئ':'\u0626','د':'\u062f', 'ذ':'\u0630','ر':'\u0631', 'ز':'\u0632','ط':'\u0637', 'ظ':'\u0638','ژ':'\u0698', 'آ':'\u0622','ي':'\u064a', '؟':'\u061f'}
for line in infile:
for src, target in replacements.items() :
line = line.replace(src, target)
outfile.write(line)
infile.close()
outfile.close()
فقط در مورد نمونه ای که من بررسی کردم، شما هیچ معادلی برای حرف 'ی' مشخص نکرده بودی!
بروزآوری: ضمناً فراموش نشه که فایل کدتون را بصورت utf8 ذخیره کنید.
موفق باشید.
به من این خطا را می ده SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0x81 in position 0: invalid start byte
مشکل من بخاطر ورژن python 3.3.2 بود و من آنرا به python 2.7.5 تغییر دادم درست شد . ممنون