दिलचस्प पोस्ट
सी में अभिप्राय कार्य घोषणाएं पायथन में पायथन कोड वाले स्ट्रिंग को मैं कैसे निष्पादित कर सकता हूं? परीक्षण अगर ईवेंट हैंडलर jQuery में एक तत्व के लिए बाध्य है समूह द्वारा मूल डेटा के एक स्तंभ को जोड़ना जावा में दो तिथियों के बीच की तारीखों की सूची कैसे प्राप्त करें हास्केल: अंतर के बीच (डॉट) और $ (डॉलर का चिह्न) मैं C ++ एप्लिकेशन में प्रतिबिंब कैसे जोड़ सकता हूँ? __PRETTY_FUNCTION__, __FUNCTION__, __func__ के बीच अंतर क्या है? क्यों malloc + मेकसेट कॉलोक की तुलना में धीमी है? 2 y अक्षों के साथ प्लॉट, बाईं ओर एक y अक्ष, और दाईं तरफ एक अन्य y अक्ष सर्वश्रेष्ठ जावा / स्विंग ब्राउज़र घटक? नि: शुल्क के बाद चर के लिए चर सेट करना निर्दिष्ट अवधि में लॉग फाइल से डेटा निकालने पता करें कि फ़ाइल बैच फ़ाइल में 4 घंटे से अधिक पुरानी है तालिका शीर्षक शीर्ष पर तय रहने के लिए जब उपयोगकर्ता इसे jQuery के दृश्य से बाहर स्क्रॉल करता है

पायथन में स्ट्रिंग्स को कैसे परिवर्तित करें?

मेरे पास इस तरह एक MySQL क्वेरी से ट्यूप्ले का ट्यूपल है:

T1 = (('13', '17', '18', '21', '32'), ('07', '11', '13', '14', '28'), ('01', '05', '06', '08', '15', '16')) 

मैं सभी स्ट्रिंग तत्वों को पूर्णांक में कनवर्ट करना चाहूंगा और उन्हें सूचियों की सूची में वापस डालूंगा:

 T2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]] 

मैंने इसे eval साथ प्राप्त करने की कोशिश की, लेकिन अभी तक कोई सभ्य परिणाम नहीं मिला।

वेब के समाधान से एकत्रित समाधान "पायथन में स्ट्रिंग्स को कैसे परिवर्तित करें?"

int() एक स्ट्रिंग को पूर्णांक मान में कनवर्ट करने के लिए पायथन मानक निर्मित फ़ंक्शन है। आप इसे एक स्ट्रिंग के साथ कॉल करते हैं जिसमें कोई संख्या तर्क है, और यह एक वास्तविक पूर्णांक में कनवर्ट की गई संख्या देता है:

 print int("1") + 1 

उपरोक्त प्रिंट 2

यदि आप अपनी सूची की संरचना जानते हैं, तो T1 (यह केवल सूचियों में शामिल है, केवल एक स्तर), आप यह पायथन 2 में कर सकते हैं:

 T2 = [map(int, x) for x in T1] 

पायथन 3 में:

 T2 = [list(map(int, x)) for x in T1] 

आप यह सूची की समझ के साथ कर सकते हैं:

 T2 = [[int(column) for column in row] for row in T1] 

आंतरिक सूची की समझ ( [int(column) for column in row] int एस की एक list बनाते हैं, जिसमें इंटरेबल ऑब्जेक्ट्स के क्रम से, दशमलव स्ट्रिंग्स जैसे row । बाहरी सूची की समझ ( [... for row in T1]) ) T1 में प्रत्येक आइटम पर लागू आंतरिक सूची की समझ के परिणामों की एक सूची बनाता है।

यदि कोई भी पंक्तियों में ऑब्जेक्ट होते हैं, तो कोड स्निपेट असफल हो जायेगा, जो int द्वारा परिवर्तित नहीं किए जा सकते। यदि आपको गैर-दशमलव स्ट्रिंग वाले पंक्तियों पर प्रक्रिया करना है, तो आपको एक स्मार्ट फ़ंक्शन की आवश्यकता होगी।

यदि आप पंक्तियों की संरचना को जानते हैं, तो आप पंक्ति के फ़ंक्शन को कॉल के साथ आंतरिक सूची समझ को बदल सकते हैं। उदाहरण के लिए।

 T2 = [parse_a_row_of_T1(row) for row in T1] 

मैं केवल समझदारी सूचियों का उपयोग करना पसंद करता हूं:

 [[int(y) for y in x] for x in T1] 

मैं अब तक सभी के उत्तरों से सहमत हूं लेकिन समस्या यह है कि यदि आपके पास सभी पूर्णांक नहीं हैं तो वे क्रैश हो जाएंगे।

यदि आप गैर-पूर्णांकों को बाहर करना चाहते थे तो

 T1 = (('13', '17', '18', '21', '32'), ('07', '11', '13', '14', '28'), ('01', '05', '06', '08', '15', '16')) new_list = list(list(int(a) for a in b) for b in T1 if a.isdigit()) 

यह केवल वास्तविक अंक पैदा करता है। मैं सीधे सूची की समझों का उपयोग नहीं करने का कारण यह है कि सूची की समझ उनके आंतरिक चर को लीक करती है।

int( ) डालने के बजाय, float( ) डाल float( ) जो आपको पूर्णांक के साथ दशमलव का उपयोग करने देगा

 T3=[] for i in range(0,len(T1)): T3.append([]) for j in range(0,len(T1[i])): b=int(T1[i][j]) T3[i].append(b) print T3 

सूची की समझ का उपयोग करना:

 t2 = [map(int, list(l)) for l in t1] 

इसे इस्तेमाल करे।

 x = "1" 

x एक स्ट्रिंग है क्योंकि इसमें इसके चारों ओर उद्धरण चिह्न हैं, लेकिन इसमें इसमें एक संख्या है

 x = int(x) 

चूंकि एक्स में नंबर 1 है, इसलिए मैं इसे पूर्णांक में बदल सकता हूँ

यह देखने के लिए कि कोई स्ट्रिंग संख्या है, आप ऐसा कर सकते हैं।

 def is_number(var): try: if var == int(var): return True except Exception: return False x = "1" y = "test" x_test = is_number(x) print(x_test) 

यह IDLE true पर प्रिंट होना चाहिए क्योंकि x एक संख्या है

 y_test = is_number(y) print(y_test) 

इसे आईडीले गलत पर प्रिंट करना चाहिए क्योंकि y नहीं संख्या में

पायथन 3.5.1 में इन कार्यों की तरह बातें:

 c = input('Enter number:') print (int(float(c))) print (round(float(c))) 

तथा

 Enter number: 4.7 4 5 

जॉर्ज।

पायथन 2 के लिए एक और कार्यात्मक समाधान:

 from functools import partial map(partial(map, int), T1) 

पायथन 3 हालांकि थोड़ा गंदा हो जाएगा:

 list(map(list, map(partial(map, int), T1))) 

हम इसे आवरण के साथ ठीक कर सकते हैं

 def oldmap(f, iterable): return list(map(f, iterable)) oldmap(partial(oldmap, int), T1) 

यदि यह केवल ट्यूपल्स का ट्यूपल है, तो कुछ rows=[map(int, row) for row in rows] तरह rows=[map(int, row) for row in rows] चाल करेंगे। (वहाँ एक सूची की समझ है और मैप (एफ, एलसीटी) के लिए कॉल है, जो कि [एफ (ए) के बराबर है)।

Eval क्या आप करना चाहते हैं नहीं है, अगर वहाँ कुछ __import__("os").unlink("importantsystemfile") किसी कारण के लिए अपने डेटाबेस में। हमेशा अपने इनपुट को मान्य करें (यदि कुछ भी नहीं है, तो अपवाद int () यदि आपके पास बुरे इनपुट हों तो बढ़ाएं)।

इस फ़ंक्शन को देखें

 def parse_int(s): try: res = int(eval(str(s))) if type(res) == int: return res except: return 

फिर

 val = parse_int('10') # Return 10 val = parse_int('0') # Return 0 val = parse_int('10.5') # Return 10 val = parse_int('0.0') # Return 0 val = parse_int('Ten') # Return None 

आप यह भी जांच सकते हैं

 if val == None: # True if input value can not be converted pass # Note: Don't use 'if not val:' 
 for str in T2 : return num(str) 

हो सकता है कि;