मेरे पास दो टेक्स्ट फ़ाइलें हैं और सामग्री इस प्रकार है (file1.txt
और file2.txt
क्रमशः);
MKKVEAIIRPFKLDEVKIALVNAGIVGMTVSEVRGFGRQKGQTERYRGSEYTVEFLQKLKVEIVVEDNQVDMVVDKIIAAARTGEIGDGKIFISPVEQVIRIRTGEKNTEAV
तथा
AQTVPYGIPLIKADKVQAQGYKGANVKVGIIDTGIAASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNTTGVLGVAPNVSLYAIKVLNSSGSGTYSAIVSGIEWATQNGLDVINMSLGGPSGSTALKQAVDKAYASGIVVVAAAGNSGSSGSQNTIGYPAKYDSVIAVGAVDSNKNRASFSSVGAELEVMAPGVSVYSTYPSNTYTSLNGTSMASPHVAGAAALILSKYPTLSASQVRNRLSSTATNLGDSFYYGKGLINVEAAAQ
मुझे इस स्ट्रिंग की अनुक्रमणिका के आधार पर चरित्र लाने की ज़रूरत है जिसे मैं जानता हूं। अब, मुझे सूचकांक के मूल्य से पहले 20 वर्ण और सूचकांक के मूल्य के बाद 20 वर्णों को लाने की आवश्यकता है जो कुल 41 वर्ण (सूचकांक के चरित्र सहित) बनाता है। यहाँ मेरा कोड है
with open('file1.txt', 'r') as myfile:
x = 50
data=myfile.read()
str1 = data[x:x+1+20]
temp = data[x-20:x]
print temp+str1
file1.txt
एक का आउटपुट SEVRGFGRQKGQTERYRGSEYTVEFLQKLKVEIVVEDNQVD
है जो सही है।
समस्या यह है कि यदि मैं file2.txt
पर समान कोड चलाता हूं और अनुक्रमणिका (x का मान) को 56
में बदलता हूं, तो मुझे जो आउटपुट मिलना चाहिए वह AASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDN
है। इसके बजाय मुझे ASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNT
मिल रहा है ऐसा क्यों है?
3 जवाब
ठीक है, यदि आप जांचते हैं, तो फ़ाइल 1 (पहली पंक्ति) में इंडेक्स 50 Y
है, बाएं से 20 तत्व SEV...
से शुरू होते हैं, जिसका अर्थ है इंडेक्स 30 से शुरू करना। यह फ़ाइल 1 के लिए आपका परिणाम है, जिसे आप कहते हैं सही है।
M K K V E A I I R P F K L D E V K I A L V N A G I V G M T V S E V R G F G R Q K G Q T E R Y R G S E Y T V E F L Q K L K V E I V V E D N Q V D M V V D K I I A A
A Q T V P Y G I P L I K A D K V Q A Q G Y K G A N V K V G I I D T G I A A S H T D L K V V G G A S F V S G E S Y N T D G N G H G T H V A G T V A A L D N T T G V
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
अब, file2 (दूसरी पंक्ति) के लिए, आप अनुक्रमणिका को 56
पर सेट करते हैं, जो फ़ाइल 2 में N
है, और बाईं ओर से 20 तत्व ASH...
से शुरू होते हैं, जो अनुक्रमणिका 36 से शुरू होता है। यह है अपेक्षित परिणाम, मुझे समझ नहीं आ रहा है कि आप इसे गलत क्यों कह रहे हैं।
तीसरी पंक्ति सूचकांक संख्या का प्रतिनिधित्व करती है
with open('file1.txt', 'r') as myfile:
x = 50
data=myfile.read()
print data[x-20:x+21]
यह स्थिति x-20 से स्थिति x+21 तक एक टुकड़ा लेता है। यह आपको 41 वर्णों का एक टुकड़ा देगा।
डेटा2, 56 रिटर्न: ASHTDLKVVGGASFVSGESYNTDGNGHGTHVAGTVAALDNT
- आपका कोड सही है।
temp = data[x-20:x]
तुम्हें देंगे
temp = data[36:56]
यानी आपकी स्ट्रिंग के वर्ण 36 से 55 (शामिल)
स्ट्रिंग वर्ण 0 से शुरू होती है, इसलिए डेटा [36] वास्तव में आपका दूसरा A है, यानी आपकी स्ट्रिंग का 37वां वर्ण
यहां कोई बग नहीं है, सिर्फ एक काउंटर मुद्दा है
आप शायद वास्तव में x = 55 सेट करना चाहते हैं (यानी मध्य वर्ण आपकी स्ट्रिंग का 56 वां है, क्योंकि इसमें 55 की अनुक्रमणिका है, क्योंकि अजगर में अनुक्रमण शून्य से शुरू होता है)
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।