تمام سوالات سوالات بدون پاسخ سوال بپرسید

سلام

من برنامه ای با 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()
1 پاسخ

سلام مجبور شدم بعضی قسمت ها رو تغییر بدم. کد زیر کار می کنه. امتحان کردم.

# -*- 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

(21 ژوئن '13, 09:34) V_B

مشکل من بخاطر ورژن python 3.3.2 بود و من آنرا به python 2.7.5 تغییر دادم درست شد . ممنون

(21 ژوئن '13, 10:27) V_B
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×52
  • ×47
  • ×34
  • ×4
  • پرسیده شده: 21 ژوئن '13, 07:06
  • بازدید: 6,615 بار
  • آخرین بروزرسانی: 21 ژوئن '13, 10:27

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها