How to get char from string by index?

后端 未结 7 989
青春惊慌失措
青春惊慌失措 2020-11-29 04:25

Lets say I have a string that consists of x unknown chars. How could I get char nr. 13 or char nr. x-14?

相关标签:
7条回答
  • 2020-11-29 04:40

    Python.org has an excellent section on strings here. Scroll down to where it says "slice notation".

    0 讨论(0)
  • 2020-11-29 04:43

    First make sure the required number is a valid index for the string from beginning or end , then you can simply use array subscript notation. use len(s) to get string length

    >>> 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
    >>> 
    
    0 讨论(0)
  • 2020-11-29 04:43
    In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
    In [2]: len(x)
    Out[2]: 45
    

    Now, For positive index ranges for x is from 0 to 44 (i.e. length - 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'
    

    For Negative index, index ranges from -1 to -45

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

    For negative index, negative [length -1] i.e. the last valid value of positive index will give second list element as the list is read in reverse order,

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

    Other, index's examples,

    In [9]: x[1]
    Out[9]: 'n'
    In [10]: x[-9]
    Out[10]: '7'
    
    0 讨论(0)
  • 2020-11-29 04:43

    This should further clarify the points:

    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')
    

    Input 3 Output m

    Input -3 Output p

    0 讨论(0)
  • 2020-11-29 04:46

    Another recommended exersice for understanding lists and indexes:

    L = ['a', 'b', 'c']
    for index, item in enumerate(L):
        print index + '\n' + item
    
    0
    a
    1
    b
    2
    c 
    
    0 讨论(0)
  • 2020-11-29 04:55

    Previous answers cover about ASCII character at a certain index.

    It is a little bit troublesome to get a Unicode character at a certain index in Python 2.

    E.g., with s = '한국中国にっぽん' which is <type 'str'>,

    __getitem__, e.g., s[i] , does not lead you to where you desire. It will spit out semething like . (Many Unicode characters are more than 1 byte but __getitem__ in Python 2 is incremented by 1 byte.)

    In this Python 2 case, you can solve the problem by decoding:

    s = '한국中国にっぽん'
    s = s.decode('utf-8')
    for i in range(len(s)):
        print s[i]
    
    0 讨论(0)
提交回复
热议问题