আমার কয়েকটি শিটফাইল রয়েছে যেখানে কয়েকটি অ্যাট্রিবিউট অ-ইংরেজি অক্ষর রয়েছে ÅÄÖ যেহেতু কিছু ক্যোয়ারী এই অক্ষরগুলি (বিশেষত চেঞ্জডেক্টর ) এর সাথে কাজ করে না , তাই আমি একটি সাধারণ স্ক্রিপ্টের সাহায্যে তাদের আগাম পরিবর্তন করার চেষ্টা করেছি এবং নতুন স্ট্রিংগুলিকে অন্য ক্ষেত্রে যুক্ত করার চেষ্টা করেছি।
তবে, অক্ষরগুলির পরিবর্তনটি ঠিকঠাক কাজ করে তবে ক্ষেত্রটি আরকিপি.আপডেট কার্সার দিয়ে আপডেট করে না।
এটি সমাধানের উপযুক্ত উপায় কী?
আমি একই ত্রুটি সহ কোডব্লকটিতে "কোড" পোস্ট করার সময় ফিল্ড ক্যালকুলেটরের মাধ্যমে এটি করার চেষ্টা করেছি।
ত্রুটির বার্তা:
রানটাইম ত্রুটি ট্রেসব্যাক (সর্বশেষতম কল): ফাইল "", লাইন 1, ফাইল "সি: /gis/python/teststring.py", লাইন 28, ভাল = কোডে (str (prow.Typkod)) ইউনিকোড এনকোড এরির: 'এসকিআই' কোডেক আপনি অক্ষরটি এনকোড করতে পারবেন না '\ xc4' পজিশনে 3: সীমিত সীমানায় নেই (128)
কোড:
# -*- coding: cp1252 -*-
def code(infield):
data = ''
for i in infield:
## print i
if i == 'Ä':
data = data + 'AE'
elif i == 'ä':
data = data + 'ae'
elif i == 'Å':
data = data + 'AA'
elif i == 'å':
data = data + 'aa'
elif i == 'Ö':
data = data + 'OE'
elif i == 'ö':
data = data + 'oe'
else:
data = data + i
return data
shp = r'O:\XXX\250000\DB\ArcView\shape.shp'
prows = arcpy.UpdateCursor(shp)
for prow in prows:
val = code(unicode(str(prow.Typkod), "utf-8"))
prow.Typkod_U = val
print val
prows.updateRow(prow)
টাইপকডের মানগুলি ধরণের হয়: [D, D, S, DDRÄ, TRÄ] ইত্যাদি
আমি উইন্ডোজ 7 এ আর্কম্যাপ বেসিক (10.1) ব্যবহার করি।
নতুন ত্রুটি বার্তা:
রানটাইম ত্রুটি ট্রেসব্যাক (সর্বশেষতম কল): ফাইল "", লাইন 1, ফাইল "সি: /gis/python/teststring.py", লাইন 29, ভাল = কোডে (ইউনিকোড (টিআর (সারি))। টাইপকড), "ইউটিএফ -8")) ইউনিকোড এনকোড এরর: 'এসকিআই' কোডেক আপনি অক্ষরের এনকোড করতে পারবেন না '' xc4 'পজিশনে 3: সীমানায় নেই (128)
>>> val
'DDRÄ'
>>> type(val)
টাইপ 'str'
এটি প্রদর্শিত হয় যেন ফাংশন থেকে আউটপুটটি কোনওভাবে ভুল। জড়িত থাকলে এটি ফিরে আসে data = u'DDR\xc4'
এবং না (যেমন আমার উদ্দেশ্য ছিল) data = 'DDRAE'
। এর কারণ হতে পারে এমন কোনও পরামর্শ?