복붙노트

[PYTHON] 알파벳으로 문자 위치 가져 오기

PYTHON

알파벳으로 문자 위치 가져 오기

90 % 확신 할 수있는 함수가 내장되어 있습니다.

나는 알파벳에 등장 인물의 위치를 ​​찾아야한다. 따라서 문자 "b"는 위치 1 (0부터 시작)입니다. 함수가 무엇인지 아는 사람이 있습니까?

미리 감사드립니다!

편집 : 내가 뭘 하려는지 알파 베팅에서 "단계"의 모든 문자 X 금액을 보내는 것입니다, 그래서 내가 "안녕"과 문자열을 가지고 있다면 "gh"내가 다시 한 단계 보냈습니다 . 그것을하는 더 나은 방법, 어떤 조언이있을 수 있을까요?

해결법

  1. ==============================

    1.색인이라고합니다. 예 :

    색인이라고합니다. 예 :

    >>> import string
    >>> string.lowercase.index('b')
    1
    >>> 
    

    참고 : Python 3에서 string.lowercase의 이름이 string.ascii_lowercase로 변경되었습니다.

  2. ==============================

    2.수입하지 않고

    수입하지 않고

    def char_position(letter):
        return ord(letter) - 97
    
    def pos_to_char(pos):
        return chr(pos + 97)
    
  3. ==============================

    3.ord ()를 사용하여 문자의 ASCII 위치를 가져오고 chr ()을 사용하여 ASCII 위치를 문자로 변환 할 수 있습니다.

    ord ()를 사용하여 문자의 ASCII 위치를 가져오고 chr ()을 사용하여 ASCII 위치를 문자로 변환 할 수 있습니다.

    편집 : a-1이 z에 매핑되고 z + 1이 a에 매핑되도록 알파벳을 감싸도록 업데이트되었습니다.

    예 :

    my_string  = "zebra"
    difference = -1
    new_string = ''.join((chr(97+(ord(letter)-97+difference) % 26) for letter in my_string))
    

    이렇게하면 모든 문자가 알파벳 ( 'ydaqz')으로 한 칸 뒤로 이동 한 문자열이 생성됩니다. 소문자 단어에만 적용됩니다.

  4. ==============================

    4.

    # define an alphabet
    alfa = "abcdefghijklmnopqrstuvwxyz"
    
    # define reverse lookup dict
    rdict = dict([ (x[1],x[0]) for x in enumerate(alfa) ])
    
    print alfa[1] # should print b
    
    print rdict["b"] # should print 1
    

    rdict는 한 번에 한 문자 씩 알파벳 순으로 진행되는 사전입니다. 열거 함수는 목록 색인 및 문자가있는 튜플을 반환합니다. 이 코드로 새로운 튜플을 생성하여 순서를 뒤집습니다 : (x [1], x [0]) 튜플 목록을 사전으로 바꿉니다. 사전은 해시 테이블 (키, 값) 데이터 구조이므로 모든 알파벳 문자의 색인을 조회 할 수 있습니다.

    그러나 그것은 당신이 당신의 문제를 풀기를 원하는 것이 아닙니다. 그리고 이것이 수업 과제라면, 당신이 그것을 제출하면 당신은 아마 표절을 0으로 만들 것입니다. 문자열을 인코딩하려면 먼저 alfa2 [n]이 alpha [n]의 인코딩 된 형식이되도록 구성된 두 번째 알파벳을 만듭니다. 귀하의 예제에서 두 번째 알파벳은 두 문자로 바뀌었지만 문자를 무작위로 섞거나 다른 패턴을 사용하여 순서를 지정할 수도있었습니다. 이 모든 것은 그리스어, 키릴 문자 등과 같은 다른 알파벳으로 계속 작동합니다.

  5. ==============================

    5.방금 파이썬을 배우기 시작 했으므로이 방법이 다른 방법과 비교하여 얼마나 효율적인지는 모르지만 작동합니다. 또한 텍스트가 대문자인지, 소문자인지 또는 구두점이 있는지 등은 중요하지 않습니다.

    방금 파이썬을 배우기 시작 했으므로이 방법이 다른 방법과 비교하여 얼마나 효율적인지는 모르지만 작동합니다. 또한 텍스트가 대문자인지, 소문자인지 또는 구두점이 있는지 등은 중요하지 않습니다.

    모든 문자를 변경하려면 다음을 수행하십시오.

    from string import maketrans
    
    textin = "abcdefghijklmnopqrstuvwxyz"
    textout = "cdefghijklmnopqrstuvwxyzab"
    texttrans = maketrans(textin, textout)
    
    text = "qcc, gr umpiq"
    
    print text.translate(texttrans)
    

    또한 일부 문자를 변경하는 데 사용됩니다.

    from string import maketrans
    
    textin = "81972"
    textout = "Seios"
    texttrans = maketrans(textin, textout)
    
    text = "811, 9t w7rk2"
    
    print text.translate(texttrans)
    
  6. from https://stackoverflow.com/questions/5927149/get-character-position-in-alphabet by cc-by-sa and MIT license