Hướng dẫn python get index of letter in alphabet - python lấy chỉ mục của chữ cái trong bảng chữ cái

Tôi chắc chắn 90% có một chức năng tích hợp trong việc này.

Tôi cần tìm vị trí của một nhân vật trong bảng chữ cái. Vì vậy, ký tự "B" là vị trí 1 (đếm từ 0), v.v ... Có ai biết chức năng được gọi là gì không?

Cảm ơn trước!

Chỉnh sửa: Điều tôi đang cố gắng làm là gửi tất cả các ký tự x số lượng "bước" trở lại trong đặt cược alpha, vì vậy nếu tôi có một chuỗi với "hi" thì đó sẽ là "gh" nếu tôi gửi lại một bước . Có thể có một cách tốt hơn để làm điều đó, bất kỳ lời khuyên?

Hướng dẫn python get index of letter in alphabet - python lấy chỉ mục của chữ cái trong bảng chữ cái

Khi được hỏi ngày 8 tháng 5 năm 2011 lúc 11:29May 8, 2011 at 11:29

0

Nó được gọi là index. Ví dụ:

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

Lưu ý: Trong Python 3, string.lowercase đã được đổi tên thành

def char_position(letter):
    return ord(letter) - 97

def pos_to_char(pos):
    return chr(pos + 97)
0.

Alex Ryan

2.3012 huy hiệu vàng16 Huy hiệu bạc14 Huy hiệu đồng2 gold badges16 silver badges14 bronze badges

Đã trả lời ngày 8 tháng 5 năm 2011 lúc 11:31May 8, 2011 at 11:31

SENTHIL KUMANSENTENTHIL KUMARANSenthil Kumaran

52,8K14 Huy hiệu vàng90 Huy hiệu bạc128 Huy hiệu đồng14 gold badges90 silver badges128 bronze badges

11

Mà không cần nhập khẩu

def char_position(letter):
    return ord(letter) - 97

def pos_to_char(pos):
    return chr(pos + 97)

Đã trả lời ngày 8 tháng 5 năm 2011 lúc 12:29May 8, 2011 at 12:29

Jakob Bowyerjakob BowyerJakob Bowyer

32,9k8 Huy hiệu vàng75 Huy hiệu bạc90 Huy hiệu Đồng8 gold badges75 silver badges90 bronze badges

1

Bạn có thể sử dụng ord () để có được vị trí ASCII của một nhân vật và chr () để chuyển đổi vị trí ASCII thành một ký tự.

Chỉnh sửa: Cập nhật để bọc bảng chữ cái để A-1 Bản đồ thành bản đồ Z và Z+1

Ví dụ:

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

Điều này sẽ tạo ra một chuỗi với tất cả các ký tự đã di chuyển một không gian ngược trong bảng chữ cái ('ydaqz'). Nó sẽ chỉ hoạt động cho các từ viết thường.

Đã trả lời ngày 8 tháng 5 năm 2011 lúc 11:53May 8, 2011 at 11:53

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 là một từ điển được tạo ra bằng cách bước qua bảng chữ cái, một ký tự tại một thời điểm. Hàm liệt kê trả về một tuple với chỉ mục danh sách và ký tự. Chúng tôi đảo ngược thứ tự bằng cách tạo một tuple mới với mã này:

def char_position(letter):
    return ord(letter) - 97

def pos_to_char(pos):
    return chr(pos + 97)
1 và sau đó biến danh sách các bộ dữ liệu thành một từ điển. Vì từ điển là cấu trúc dữ liệu băm (khóa, giá trị), giờ đây chúng ta có thể tra cứu chỉ số của bất kỳ ký tự bảng chữ cái nào.

Tuy nhiên, đó không phải là điều bạn muốn giải quyết vấn đề của mình và nếu đây là một nhiệm vụ của lớp, bạn có thể sẽ nhận được 0 cho đạo văn nếu bạn gửi nó. Để mã hóa các chuỗi, thứ nhất tạo bảng chữ cái thứ hai được tổ chức sao cho alfa2 [n] là dạng được mã hóa của alfa [n]. Trong ví dụ của bạn, bảng chữ cái thứ hai sẽ được thay đổi bởi hai ký tự nhưng bạn cũng có thể xáo trộn ngẫu nhiên các ký tự hoặc sử dụng một số mẫu khác để đặt hàng chúng. Tất cả những điều này sẽ tiếp tục làm việc với các bảng chữ cái khác như Hy Lạp, Cyrillic, v.v.

Đã trả lời ngày 9 tháng 5 năm 2011 lúc 1:15May 9, 2011 at 1:15

Michael Dillonmichael DillonMichael Dillon

31.5K5 Huy hiệu vàng69 Huy hiệu bạc105 Huy hiệu Đồng5 gold badges69 silver badges105 bronze badges

Tôi chỉ mới bắt đầu học Python, vì vậy tôi không biết điều này hiệu quả như thế nào so với các phương pháp khác, nhưng nó hoạt động. Ngoài ra, không quan trọng liệu văn bản là chữ hoa, chữ thường hay nếu có bất kỳ dấu câu nào, v.v.

Nếu bạn muốn thay đổi tất cả các chữ cái:

from string import maketrans

textin = "abcdefghijklmnopqrstuvwxyz"
textout = "cdefghijklmnopqrstuvwxyzab"
texttrans = maketrans(textin, textout)

text = "qcc, gr umpiq"

print text.translate(texttrans)

Cũng hoạt động để thay đổi một số ký tự:

from string import maketrans

textin = "81972"
textout = "Seios"
texttrans = maketrans(textin, textout)

text = "811, 9t w7rk2"

print text.translate(texttrans)

Đã trả lời ngày 7 tháng 11 năm 2016 lúc 14:21Nov 7, 2016 at 14:21

Đây là một phương pháp bắt tất cả các phương pháp có thể hữu ích cho ai đó ...

def alphabet(arg, return_lower=True):

    """
        Indexing the english alphabet consisting of 26 letters. 
        Note: zero indexed

            example usage:

                alphabet('a')
                >> 0

                alphabet(25, return_lower=False)
                >> 'Z'

        :param arg: Either type int or type chr specifying the \
                    index of desired letter or ther letter at \
                    the desired index respectivley.
        :param return_lower: If index is passes, returns letter \
                         with corresponding case. Default is \
                         set to True (lower case returned). 
        :returns: integer representing index of passed character \
                    or character at passed index.
    """

    arg = str(arg)
    assert arg.isdigit() or arg.isalpha()

    if arg.isdigit():
        if return_lower:
            return chr(int(arg) + 97).lower()  
        return chr(int(arg) + 97).upper()

    return ord(arg.lower()) - 97

Đã trả lời ngày 1 tháng 12 năm 2018 lúc 5:40Dec 1, 2018 at 5:40

Hướng dẫn python get index of letter in alphabet - python lấy chỉ mục của chữ cái trong bảng chữ cái

LJ Brownlj BrownLJ Brown

591 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Tương đương với chức năng cột trong excel

def position(word):
    if len(word)>1:
        pos = 0
        for idx, letter in enumerate(word[::-1]):
            pos += (position(letter)+(1 if idx!=0 else 0))*26**(idx)
        return pos
    return ord(word.lower()) - 97


print(position("A")) --> 0
print(position("AA")) --> 26
print(position("AZ")) --> 51

Đã trả lời ngày 1 tháng 5 lúc 11:40May 1 at 11:40

1