সূচি অনুসারে স্ট্রিং থেকে চর কিভাবে পাবেন?


91

বলি আমার কাছে একটি স্ট্রিং রয়েছে যাতে এক্স অজানা অক্ষর রয়েছে। আমি কীভাবে চর এনআর পেতে পারি? 13 বা চর এনআর। এক্স -14?

উত্তর:


129

প্রথমে নিশ্চিত হয়ে নিন যে প্রয়োজনীয় নম্বরটি শুরু বা শেষ থেকে স্ট্রিংয়ের জন্য একটি বৈধ সূচক , তারপরে আপনি কেবল অ্যারে সাবস্ক্রিপ্ট স্বরলিপিটি ব্যবহার করতে পারেন। len(s)স্ট্রিং দৈর্ঘ্য পেতে ব্যবহার করুন

>>> s = "python"
>>> s[3]
'h'
>>> s[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[0]
'p'
>>> s[-1]
'n'
>>> s[-6]
'p'
>>> s[-7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> 

4
আপনি নেতিবাচক পূর্ণসংখ্যার পাস করতে পারেন
আভিরাম সেগাল

@ আভিরামসেগাল সংশোধন করার জন্য ধন্যবাদ, হ্যাঁ আমরা পারি, তবে সেগুলিও স্ট্রিং দৈর্ঘ্যের সীমাতে থাকা উচিত।
ধ্রুবপাঠক

4
আপনার সম্পাদনার পরে এটির সেরা উত্তরটি, নীচে পরিবর্তে ভোট দিয়েছিলেন :)
আভিরাম সেগাল

4
প্রতিটি সূচকে অনন্য অক্ষরযুক্ত একটি আলাদা শব্দ ব্যবহার করে এই উত্তরটি উন্নত হতে পারে। এটি যেহেতু দাঁড়িয়েছে [3] এটি 'l' কখন ফিরে আসবে তা অস্পষ্ট।
নতুন ব্যবহারকারীদের প্রতি দয়া করুন

4
কেন s[-5]কাজ করতে পারে তবে s[-6]পরিসীমা ত্রুটির বাইরে কোনও সূচকে অভিযোগ করবে? পাইথনের স্ট্রিং অবজেক্টে প্রয়োগের বিষয়ে এত কৌতূহল।
অ্যালস্টন

5
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
In [2]: len(x)
Out[2]: 45

এখন, x এর জন্য ধনাত্মক সূচক রেঞ্জের জন্য 0 থেকে 44 (অর্থাৎ দৈর্ঘ্য - 1)

In [3]: x[0]
Out[3]: 'a'
In [4]: x[45]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)

/home/<ipython console> in <module>()

IndexError: string index out of range

In [5]: x[44]
Out[5]: 's'

নেতিবাচক সূচকের জন্য, সূচকটি -1 থেকে -45 পর্যন্ত রয়েছে

In [6]: x[-1]
Out[6]: 's'
In [7]: x[-45]
Out[7]: 'a

নেতিবাচক সূচকের জন্য, নেতিবাচক [দৈর্ঘ্য -১] অর্থাৎ ধনাত্মক সূচকের শেষ বৈধ মানটি তালিকার বিপরীত ক্রমে পড়ার পরে দ্বিতীয় তালিকার উপাদান দেবে,

In [8]: x[-44]
Out[8]: 'n'

অন্যান্য সূচকের উদাহরণ,

In [9]: x[1]
Out[9]: 'n'
In [10]: x[-9]
Out[10]: '7'

প্রশ্নটি আপনার কাছে বুনিয়াদি মনে হলেও, কী চলছে তার কিছু মৌখিক বিবরণ দেওয়া উচিত।
হ্যানলে

উত্তরটি কিছু বর্ণনার সাথে আপডেট করেছেন, আশা করি এটি সাহায্য করবে :)
অ্যাভাসাল

3

পূর্ববর্তী উত্তরগুলি ASCII characterনির্দিষ্ট সূচকে প্রায় অন্তর্ভুক্ত থাকে।

Unicode characterপাইথন 2-তে একটি নির্দিষ্ট সূচীতে একটি পেতে একটু সমস্যা হয় is

যেমন, s = '한국中国にっぽん'যা দিয়ে <type 'str'>,

__getitem__উদাহরণস্বরূপ, s[i]যেখানে আপনি চান সেখানে আপনাকে নিয়ে যায় না। এটি মত কিছু seut বাইরে হবে । (অনেক ইউনিকোড অক্ষর 1 বাইটের বেশি তবে __getitem__পাইথন 2 এ 1 বাইট বাড়ানো হয়))

পাইথন 2 এর ক্ষেত্রে, আপনি ডিকোডিং দ্বারা সমস্যাটি সমাধান করতে পারেন:

s = '한국中国にっぽん'
s = s.decode('utf-8')
for i in range(len(s)):
    print s[i]

2

Python.org স্ট্রিং উপর একটি চমৎকার অধ্যায় আছে এখানে । যেখানে "স্লাইস নোটেশন" বলে সেখানে নীচে স্ক্রোল করুন।


1

তালিকাগুলি এবং সূচিগুলি বোঝার জন্য আরেকটি প্রস্তাবিত বহিরাগত:

L = ['a', 'b', 'c']
for index, item in enumerate(L):
    print index + '\n' + item

0
a
1
b
2
c 

0

এটি আরও উল্লেখ করা উচিত পয়েন্ট:

a = int(raw_input('Enter the index'))
str1 = 'Example'
leng = len(str1)
if (a < (len-1)) and (a > (-len)):
    print str1[a]
else:
    print('Index overflow')

ইনপুট 3 আউটপুট মি

ইনপুট -3 আউটপুট পি


0

আমি মনে করি এটি কথায় বর্ণনার চেয়ে আরও স্পষ্ট

s = 'python'
print(len(s))
6
print(s[5])
'n'
print(s[len(s) - 1])
'n'
print(s[-1])
'n'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.