পাইথন অভিধান: আপনি 'অক্ষর অপসারণ

আমি কিভাবে নিম্নলিখিত অভিধান থেকে আপনি অক্ষরগুলিকে সরান?

{u'name': u'A', u'primary_key': 1}  

এই তথ্যটি মংগো ডেটাবেস খুঁজুন() অনুসন্ধান থেকে আসছে

এটা মনে হচ্ছে যাতে

{'name': 'A', 'primary_key': 1}
34
যখন আমি বিবৃতিটি কার্যকর করতে psycopg2 ব্যবহার করি তখন এটি ব্যর্থ হয়, আমি মনে করি এটি হল প্রোগ্রামিংয়ের ত্রুটি: 'সিনট্যাক্স ত্রুটিটি কাছাকাছি বা কাছাকাছি "" "" P_dimension (id, name) ভলিউস (1, ই \ অ্যাকো শক্তি) \ " "" "\ nLINE 1:" "" p_dimension (আইডি, নাম) ভ্যালুতে অন্তর্ভুক্ত করুন (1, E \ 'acr ... \ n ^ \ n'
যোগ লেখক daydreamer, উৎস
যোগ করা হয়েছে - stackoverflow.com/questions/8101744/…
যোগ লেখক daydreamer, উৎস
অক্ষর নির্দেশ করে যে স্ট্রিংগুলি ইউনিকোড স্ট্রিং। আপনি তাদের "অপসারণ" অনুপস্থিত জন্য কোন কারণ আছে?
যোগ লেখক Sven Marnach, উৎস
এই psycopg2 এবং mongodb না একটি সমস্যা মত একটি ভয়ানক অনেক শোনাচ্ছে, আপনার ত্রুটি যেখানে যে বিবেচনা বিবেচনা। আপনি সমাধান করার চেষ্টা করছেন এমন সমস্যার সাথে সম্পূর্ণ উদাহরণ পোস্ট করুন
যোগ লেখক SingleNegationElimination, উৎস
@daydreamer আপনি সম্ভবত ব্যর্থ কোডটি পোস্ট করতে হবে।
যোগ লেখক Amber, উৎস

6 উত্তর

SQLite3 এর মতো কিছু ডেটাবেস আপনাকে রূপান্তরকারী এবং অ্যাডাপ্টার ফাংশন যাতে আপনি ইউনিকোড এর পরিবর্তে str হিসাবে পাঠ্য পুনরুদ্ধার করতে পারেন। দুর্ভাগ্যবশত, মংডোডিবি এই বিকল্পটি str, দশমিক বা ডেটটাইম হিসাবে সাধারণত প্রয়োজনীয় কোনও প্রকারের জন্য সরবরাহ করে না:

মঙ্গোর বিকল্পগুলি বাদ দিয়ে, যে তথ্যটি পুনরুদ্ধার করার পরে পাইথন কোডটি রূপান্তর করতে দেয়। আপনি একটি পুনরাবৃত্তিমূলক ফাংশন লিখতে পারেন যা প্রতিটি ক্ষেত্রকে রূপান্তর করার ফলাফলকে অতিক্রম করে।

একটি দ্রুত এবং নোংরা বিকল্প হিসাবে, এখানে একটি সামান্য হ্যাক যা ব্যবহার হতে পারে:

>>> import json, ast
>>> r = {u'name': u'A', u'primary_key': 1}
>>> ast.literal_eval(json.dumps(r))
{'name': 'A', 'primary_key': 1}
43
যোগ

u অক্ষর যা আপনি দেখছেন কেবল তার মানে হল তারা ইউনিকোড স্ট্রিং।

যদি আপনি তাদের ইউনিকোড না চান তবে আপনি এসিসিআইআই হিসাবে অন্য কিছু হিসাবে এনকোড করতে পারেন।

>>> s = u'hi!'
>>> s
u'hi'

>>> s2 = s.encode('ascii')
>>> s2
'hi'
17
যোগ

আপনি যদি কেবলমাত্র জোনস ডাটা স্ট্রিংতে স্বতন্ত্র রূপান্তর করতে চান তবে আপনি করতে পারেন:

>>> from bson.json_util import dumps
>>> data = {u'name': u'A', u'primary_key': 1}
>>> dumps(data)
'{"name": "A", "primary_key": 1}'
3
যোগ

আপনার psycopg2 আপনার স্ট্রিংগুলিকে এনকোড করতে হবে, আপনার প্রশ্নগুলির মধ্যে পাইথন-সিনট্যাক্স স্ট্রিংগুলি সন্নিবেশ করার চেষ্টা করবেন না - যদি আপনার স্ট্রিংগুলিতে কিছু অক্ষর থাকে যা এসকিউএলটি স্ট্রিংটি শেষ করার অর্থ ব্যাখ্যা করে তবে আপনি নিজেকে একটি SQL ইনজেকশন সমস্যার বিপদের মধ্যে ফেলে দিচ্ছেন। আপনি এই মত psycopg2 পরামিতি পাস করা উচিত:

cursor.execute('INSERT INTO person (name, town) VALUES (%s %s)', (name, town))

কারণ psycopg2 খুব ভালভাবে SQL সিনট্যাক্স জানে, এটি u অক্ষরগুলিকে ছেড়ে দেবে কারণ এটি আপনার নাম এবং শহর স্ট্রিং এবং উদ্ধৃতি পায় এবং পালিয়ে যায় ঠিক এই ভাবে যে এই SQL বিবৃতি প্রয়োজন।

3
যোগ

সভেন তার মন্তব্যের উল্লেখ হিসাবে, আপনি মংডব-এ উপস্থাপিত প্রকারের একটি ইঙ্গিত (আসলে এটি জেসনকে ইউনিকোড ব্যবহার করার জন্য সংজ্ঞায়িত করা হয়েছে)।

এই সত্যটি আপনার কাছে সম্পূর্ণ স্বচ্ছ হওয়া উচিত, আসলে আপনি str এবং ইউনিকোড মানগুলি ডিক্টগুলিতে একত্রিতভাবে ব্যবহার করতে পারেন।

>>> 'foo' in {u'foo': 5}
True
>>> {u'foo': 5}['foo']
5
>>> 
2
যোগ

স্ট্রিংগুলি ইউনিকোডের মধ্যে আপনি কেবল স্ট্রিংগুলি থেকে সরাতে পারবেন না, এটি প্রতীক হিসাবে।

এক সমাধান এনকোড ফাংশন ব্যবহার করা হয়:

old_strings = {u'name':u'A', u'primary_key':1}
newstrings = {}
for k in old_strings.keys():
    newtsrings[k] = old_strings[k].encode('ascii','ignore')

এই শুধু অ Ascii অক্ষর উপেক্ষা করবে।

0
যোগ