एक स्ट्रिंग में पहले 100 वर्णों का आउटपुट


108

अजगर में एक प्रतिस्थापन समारोह खोजने के लिए प्रतीत हो सकता है।

कहो कि मैं पहले 100 अक्षरों को एक स्ट्रिंग में आउटपुट करना चाहता हूं, मैं यह कैसे कर सकता हूं?

मैं इसे सुरक्षित रूप से भी करना चाहता हूं, अगर स्ट्रिंग 50 अक्षर है तो इसे विफल नहीं होना चाहिए।



1
"वर्ण" से आपका क्या तात्पर्य है? कोड पॉइंट, ग्रेपमे क्लस्टर या कोड यूनिट? स्लाइसिंग कोड इकाइयों की गणना करेगा, जो वांछित परिणाम नहीं दे सकता है।
— फिलिप

जवाबों:


168
print my_string[0:100]

5
यह 100 से छोटे तारों के लिए भी काम करता है, उदाहरण के लिए print 'foo'[:100](ध्यान दें कि len('foo')3 है, इसलिए भी जब foo[100]यह काम नहीं करता है, तो यह करता है)
— रोड्रिगो लागुना

67

से अजगर ट्यूटोरियल :

पतले स्लाइस सूचकांकों को इनायत से संभाला जाता है: एक सूचकांक जो बहुत बड़ा होता है, उसे स्ट्रिंग आकार से बदल दिया जाता है , निचले बाउंड की तुलना में एक ऊपरी बाउंड एक खाली स्ट्रिंग देता है।

इसलिए इसका उपयोग करना सुरक्षित है x[:100]।



7

फिलिप की चिंता (टिप्पणियों में) का जवाब देने के लिए, स्लाइसिंग यूनिकोड स्ट्रिंग्स के लिए भी ठीक काम करता है

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ

यदि आप उपरोक्त कोड को स्क्रिप्ट के रूप में चलाना चाहते हैं, तो इस लाइन को सबसे ऊपर रखें

# -*- coding: utf-8 -*-

यदि आपका संपादक utf-8 में सेव नहीं करता है, तो सही एन्कोडिंग का विकल्प चुनें


2
आपके उत्तर का अनादर नहीं, लेकिन ग्रीक में केवल 24 अक्षर हैं , ςऔर σएक ही अक्षर हैं :-)
— paxdiablo

4
@ पक्सीडब्लो, दोह! मैंने उन्हें विकिपीडिया पृष्ठ से कॉपी कर लिया। लकी I ने greek_alphabetतब चर का नाम नहीं लिया :)
— जॉन ला रोय

4

सरणियों का स्लाइसिंग के साथ किया जाता है [first:last+1]।

एक चाल जिसका मैं बहुत अधिक उपयोग करता हूं, वह है दीर्घवृत्त के साथ अतिरिक्त जानकारी का संकेत देना। इसलिए, यदि आपका क्षेत्र एक सौ वर्णों का है, तो मैं उपयोग करूंगा:

if len(s) <= 100:
    print s
else:
    print "%s..."%(s[:97])

और हां, मुझे पता ()है कि %फॉर्मेटिंग ऑपरेटर के लिए इस मामले में बहुत ही कम है, यह सिर्फ मेरी शैली है।


मुझे लगता है कि यह विचार के लिए भोजन के रूप में था, लेकिन ओपी के मामले में मैं शायद ऐसा करने का सुझाव नहीं दूंगा। परिणाम एक स्ट्रिंग होगा जिसे आपको सामग्री के लिए आगे ट्रिम या ऐसा कुछ करने के लिए जांचना होगा। इस मामले में, मैं कल्पना करूँगा कि कोई भी उस संख्या को परिवर्तनशील बनाना चाहेगा, और परिणाम हमेशा सही होगा, या संख्या को निश्चित किया जाएगा और हैंडलिंग या तो कुछ सार्थक, या त्रुटि पैदा करेगी या विफलता के मामले में इनायत होगी। मैं कई मामलों के बारे में नहीं सोच सकता, मानव पढ़ने योग्य जानकारी देने के अलावा, जहां मैं एक स्ट्रिंग में मनमाने ढंग से पाठ जोड़ना चाहता हूं।

3

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

एक और दृष्टिकोण का उपयोग करना है 'yourstring'.ljust(100)[:100].strip()।

यह आपको पहले 100 वर्ण देगा। यदि आपका स्ट्रिंग अंतिम वर्ण स्थान है तो आपको एक छोटी स्ट्रिंग मिल सकती है।


धन्यवाद। अजीब क्यों stackoverflow पर सबसे अच्छा जवाब नहीं पहचाना और आसानी से upvoted हो।
— तुलसी मूसा

3

स्ट्रिंग प्रारूपण का उपयोग कर %इसे संभालने का एक शानदार तरीका है। यहाँ कुछ उदाहरण हैं।

स्वरूपण कोड एक स्ट्रिंग में '%s'कनवर्ट करता '12345'है, लेकिन यह पहले से ही एक स्ट्रिंग है।

>>> '%s' % '12345'

'12345'

'%.3s' केवल पहले तीन वर्णों का उपयोग करने के लिए निर्दिष्ट करता है।

>>> '%.3s' % '12345'

'123'

'%.7s'पहले सात वर्णों का उपयोग करने के लिए कहता है, लेकिन केवल पाँच हैं। कोई दिक्कत नहीं है।

>>> '%.7s' % '12345'

'12345'

'%7s' सात वर्णों का उपयोग करता है, बाईं ओर रिक्त स्थान के साथ लापता वर्णों को भरता है।

>>> '%7s' % '12345'

'  12345'

'%-7s' एक ही बात है, सही पर लापता पात्रों को भरने के अलावा।

>>> '%-7s' % '12345'

'12345  '

'%5.3' कहते हैं कि पहले तीन वर्णों का उपयोग करें, लेकिन इसे कुल पांच वर्णों के बाईं ओर रिक्त स्थान से भरें।

>>> '%5.3s' % '12345'

'  123'

दाईं ओर भरने के अलावा एक ही बात।

>>> '%-5.3s' % '12345'

'123  '

कई तर्क भी संभाल सकते हैं!

>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)

'do u no 123 da 67 wae'

यदि आपको और भी अधिक लचीलेपन की आवश्यकता है, str.format()तो भी उपलब्ध है। यहाँ दोनों के लिए प्रलेखन है।


0
[start:stop:step]

इसलिए यदि आप केवल 100 पहला चरित्र लेना चाहते हैं, तो उपयोग करें your_string[0:100]या your_string[:100] यदि आप केवल चरित्र को भी उसी स्थिति में ले जाना चाहते हैं, तो your_string[::2] प्रारंभ के लिए "डिफ़ॉल्ट मान" का उपयोग करें 0, स्टॉप के लिए - स्ट्रिंग की लेन, और चरण के लिए - 1. तो जब आप इसका एक और प्रदान नहीं करते हैं: ':', तो यह इसे डिफ़ॉल्ट मान का उपयोग करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.