2011-06-21 20 views
30

मेरे पास एक स्ट्रिंग "42 0" है (उदाहरण के लिए) और दो पूर्णांकों की सरणी प्राप्त करने की आवश्यकता है। क्या मैं एक स्पेस पर .split कर सकता हूं?पायथन में स्ट्रिंग को पूर्णांक में कैसे विभाजित करें?

उत्तर

42
text = "42 0" 
nums = [int(n) for n in text.split()] 
+1

पूर्णांक (एन की तरह बनाया गया-इन करने के लिए iterables के आइटम परिवर्तित करना चाहते हैं) वैल्यूएरर बढ़ा सकता है अगर यह मानचित्र के लिए – Kopfgeldjaeger

9
l = (int(x) for x in s.split()) 

आप यकीन है कि वहाँ हमेशा से रहे हैं दो पूर्णांकों हैं, तो आप भी कर सकता है:

a,b = (int(x) for x in s.split()) 

या यदि आप के बाद

l = [int(x) for x in s.split()] 
4

बेशक सरणी को संशोधित करने पर योजना आप split पर कॉल कर सकते हैं, लेकिन यह तारों को वापस कर देगा, पूर्णांक नहीं।

>>> x, y = "42 0".split() 
>>> [int(x), int(y)] 
[42, 0] 

या

[int(x) for x in "42 0".split()] 
7

यह काम करना चाहिए है:

[ int(x) for x in "40 1".split(" ") ] 
2

अन्य उत्तर पहले से ही पता चलता है कि आप split() उपयोग कर सकते हैं एक list में मूल्यों को प्राप्त करने के लिए।

import array 
s = '42 0' 
a = array.array('i') 
for n in s.split(): 
    a.append(int(n)) 

संपादित करें:: एक अधिक संक्षिप्त समाधान: यदि आप पायथन के arrays के बारे में पूछ रहे थे, तो यहाँ एक समाधान है

import array 
s = '42 0' 
a = array.array('i', (int(t) for t in s.split())) 
65

6 जवाब लगभग पर्याप्त एक सवाल है कि ओपी आसानी से खुद को जवाब हो सकता है के लिए नहीं है interpreter में परीक्षण करके:

>>> "42 0".split() # or .split(" ") 
['42', '0'] 

ए: हां।

लेकिन यह विशेष रूप से बाहर नहीं बताया गया है कि खाली स्थान के पर डिफ़ॉल्ट विभाजन द्वारा split विधि (अंतरिक्ष, टैब, carriage returnऔरnewline) यदि आप इसे करने के लिए एक तर्क नहीं दे रहे हों।

>>> " \r 42\n\r \t\n \r0\n\r\n".split() 
['42', '0'] 

इसके अलावा, map का उपयोग कर आम तौर पर सूची comprehensions का उपयोग करने से क्लीनर लग रहा है जब आप int, float, str, आदि .:

>>> map(int, "42 0".split()) 
[42, 0] 
+4

+1 से काम नहीं करता है और विभाजन के लिए कुछ भी पास नहीं कर रहा है() –

+0

इस उत्तर का पहला भाग अभी भी वास्तविक प्रश्न को संबोधित नहीं करता है। पूछताछ करना चाहता है कि वह int * पर कास्टिंग करते समय विभाजित * का उपयोग कर सकता है या नहीं। नक्शा के बारे में दूसरा आधा, अच्छा और उपयोगी लग रहा है। – Starman

संबंधित मुद्दे