python字母變成數字怎么辦_在Python中將字母轉換為數字

14 個答案:

答案 0 :(得分:71)

這樣的事情:

print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]

修改強>

既然你讓我解釋我會...雖然已經在[?]的評論中得到了很好的解釋。

讓我們在更多的一行開始。

input = raw_input('Write Text: ')

input = input.lower()

output = []

for character in input:

number = ord(character) - 96

output.append(number)

print output

這也是一樣的,但更具可讀性。在您嘗試理解我的第一個答案之前,請確保您能夠理解這里發生了什么。這里的一切都非常標準,簡單的Python。需要注意的一件事是ord函數。 ord代表序數,幾乎每種高級語言都有這種功能。它為您提供了任何角色的數字表示的映射。 ord的反函數稱為chr。

chr(ord('x')) == 'x' # for any character, not just x.

如果你自己測試,a的序數是97(我上面發布的第三個鏈接將顯示完整的ASCII字符集。)每個小寫字母的范圍是97-122(26個字符。)所以,如果你只需從任何小寫字母的序數中減去96,你將得到它在字母表中的位置,假設你取'a'== 1.所以,序數為'b'== 98,'c'== 99,等等當你減去96,'b'== 2,'c'== 3等等。

我發布的初始解決方案的其余部分只是一些Python技巧,你可以學習稱為列表理解。但是,我不會專注于那個,而是專注于學習用任何語言解決問題,其中ord是你的朋友。我希望這會有所幫助。

答案 1 :(得分:11)

您可以使用chr()和ord()來轉換字母和整數。

這是一個簡單的例子。

>>> chr(97)

'a'

>>> ord('a')

97

答案 2 :(得分:8)

如果您打算大量使用此轉換,請考慮計算一次并將結果放入字典中:

>>> import string

>>> di=dict(zip(string.letters,[ord(c)%32 for c in string.letters]))

>>> di['c']

3

優點是字典查找非常快,而不是在每次調用時遍歷列表。

>>> for c in sorted(di.keys()):

>>> print "{0}:{1} ".format(c, di[c])

# what you would expect....

答案 3 :(得分:8)

不要太基礎,但是這個:

>>> char1 = ['a''b''c''d''e''f''g''h''i''j''k''l'

'm''n''o''p''q''r''s''t''u''v''w''x''y''z']

與此非常不同:

>>> char2 = ['a','b','c','d','e','f','g','h','i','j','k','l',

'm','n','o','p','q','r','s','t','u','v','w','x','y','z']

第一個,沒有逗號和你的問題中的內容,是一個帶有26個元素字符串的單元素列表。第二個是26個元素列表,每個列表的長度都是一個字符。

如果您打印每個:

>>> print char1, len(char1), len(char1[0])

['abcdefghijklmnopqrstuvwxyz'] 1 26

>>> print char2, len(char2), len(char2[0])

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',

'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 26 1

很明顯,需要額外的一步才能將char1的個別字符轉換為iterable。

如果你有sequence個字符'a'到'z'和/或'A'到'Z',你可以輕松返回list comprehension字符的數字:

>>> [ord(x)%32 for x in char2]

[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]

對于您擁有的數據結構類型,您需要首先訪問該字符串:

>>> [ord(x)%32 for x in char1[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]

因此,如果您的代碼清單與您的問題相同,則可能是您的問題。

合理的替代方案是:[ord(x.lower())-96 for x in char1[0]]

您可以看到,沒有逗號的characters=['a''b''c'...]與在['abc...']列表中輸入字符串中的所有字符相同。

所以現在嘗試:

>>> import string

>>> [ord(x.lower())-96 for x in string.letters]

[1,2,...26, 1,2,3...26] # my ellipses

>>> char3=[string.letters] # one string as element[0]

>>> [ord(x)%32 for x in char3[0]]

>>> [ord(x)%32 for x in [string.letters][0]]

答案 4 :(得分:6)

這是我過去常用的功能。適用于大寫和小寫。

def convert_char(old):

if len(old) != 1:

return 0

new = ord(old)

if 65 <= new <= 90:

# Upper case letter

return new - 64

elif 97 <= new <= 122:

# Lower case letter

return new - 96

# Unrecognized character

return 0

答案 5 :(得分:5)

[str(ord(c)&31) for c in text]

答案 6 :(得分:2)

這里有一些我用來將excel列字母轉換成數字的東西(所以限制為3個字母,但如果你需要更多的話,很容易將它擴展出來)。可能不是最好的方式,但它適用于我需要它。

def letter_to_number(letters):

letters = letters.lower()

dictionary = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26}

strlen = len(letters)

if strlen == 1:

number = dictionary[letters]

elif strlen == 2:

first_letter = letters[0]

first_number = dictionary[first_letter]

second_letter = letters[1]

second_number = dictionary[second_letter]

number = (first_number * 26) + second_number

elif strlen == 3:

first_letter = letters[0]

first_number = dictionary[first_letter]

second_letter = letters[1]

second_number = dictionary[second_letter]

third_letter = letters[2]

third_number = dictionary[third_letter]

number = (first_number * 26 * 26) + (second_number * 26) + third_number

return number

答案 7 :(得分:2)

>>> [str(ord(string.lower(c)) - ord('a') + 1) for c in string.letters]

['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', '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']

答案 8 :(得分:2)

def letter_to_int(letter):

alphabet = list('abcdefghijklmnopqrstuvwxyz')

return alphabet.index(letter) + 1

這里,如果列表包含x,則index(x)函數返回x的位置值。

答案 9 :(得分:1)

如果目標只是轉換字母abcd .... xyz和ABCD .... XYZ,我會使用一個函數:

from string import letters

def rank(x, d = dict((letr,n%26+1) for n,letr in enumerate(letters[0:52]))):

return d[x]

我寫了[0:52]因為我的Python 2.7版本顯示了值

* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz *????????àá??????èéê?ìí??D?òó????ùú?üYT?àáa?????èéê?ìí??e?òó????ùú?üyt?

表示string.letters參數。

因為參數d接收一個值作為默認參數,所以在執行函數定義以生成函數對象時,此值的微積分僅執行一次。

因此,即使該函數被上訴了三千次,也可以在不重新計算該值的情況下使用該函數。

順便說一下,對于函數的每個上訴,不再使用lower()。在構造默認參數期間,已經處理了大寫字母的情況。

使用的一個例子:

word = 'supercalifragilisticexpialidocious'

print ''.join( letter if rank(letter)%3!=0 else '.' for letter in word)

結果:

s.pe..a .... AG ... st..e.p.a..d .....小號

它也可以與map()一起使用:

print map(rank,'ImmunoElectroPhoresis')

結果:

[9,13,13,21,14,15,5,12,5,3,20,18,15,16,8,15,18,5,19,9,19]

答案 10 :(得分:1)

如果您只想將數字映射到一個字母,那么只需執行以下簡單的操作:

def letter_to_index(letter):

_alphabet = 'abcdefghijklmnopqrstuvwxyz'

return next((i for i, _letter in enumerate(_alphabet) if _letter == letter), None)

當然如果你想讓它從1開始,那么只需添加(i + 1代表我,等等。

答案 11 :(得分:1)

使用此功能。它將一串字母表轉換為其等效的數字值:

axis = (^-^) candle^.high candle^.low

答案 12 :(得分:1)

如果您正在查看相反的內容,例如1 = A,2 = B等,則可以使用以下代碼。請注意,由于我必須將班級中的部門轉換為A,B,C等,因此我最多只能達到2級。

loopvariable = 0

numberofdivisions = 53

while (loopvariable

if(loopvariable<26):

print(chr(65+loopvariable))

loopvariable +=1

if(loopvariable > 26 and loopvariable <53):

print(chr(65)+chr(65+(loopvariable-27)))

答案 13 :(得分:0)

這是我的解決方案,您希望將字母表中的所有字母轉換為英文字母中這些字母的位置,并返回這些字符串。

如果您想詳細了解它,請告訴我。我使用了以下概念

- 列表理解

- 字典理解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542934.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生產領料、退料頻繁_領料號碼

生產領料、退料頻繁Problem statement: 問題陳述&#xff1a; Given an array of integers, find and print the maximum number of integers you can select from the array such that the absolute difference between any two of the chosen integers is less than or equa…

iOS設備、Icon、LaunchImage、圖片分辨率

iOS設備 iOS設備的屏幕的大小、分辨率以及比例因數&#xff08;Scale Factor&#xff09;[1]。 iPhone 設備寬(inch)高(inch)對角線(inch)邏輯分辨率(point)Scale Factor設備分辨率(pixel)PPI3GS2.44.53.5320X4801x320X4801634/4s2.314.53.5320X4802x640X9603265c2.334.904320X…

計算機應用基礎2010版知識點,2010計算機應用基礎選擇題(含答案版)重點.doc

2010計算機應用基礎選擇題(含答案版)重點第1部分1、C根據計算機使用的電信號來分類&#xff0c;電子計算機分為數字計算機和模擬計算機&#xff0c;其中&#xff0c;數字計算機是以( )為處理對象。&#xff21;&#xff0e;字符數字量 &#xff22;&#xff0e;物理量 &#…

mysql如何植入到oracle_分享MSSQL、MySql、Oracle的大數據批量導入方法及編程手法細節...

1&#xff1a;MSSQLSQL語法篇&#xff1a;BULK INSERT[ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]FROM data_file[ WITH([ [ , ] BATCHSIZE batch_size ][ [ , ] CHECK_CONSTRAINTS ][ [ , ] CODEPAGE { ACP | OEM | RAW | code_page…

Java文件類String [] list(FilenameFilter fnf)方法,帶示例

File Class String []列表(FilenameFilter fnf) (File Class String[] list(FilenameFilter fnf)) This method is available in package java.io.File.list(FilenameFilter fnf). 軟件包java.io.File.list(FilenameFilter fnf)中提供了此方法。 This method is used to return…

求最大公因數

while 1:s input(請輸入一個數&#xff1a;)e input(請輸入一個數&#xff1a;)s int(s)e int(e)if s 0 or e 0:print(錯誤)continueif s > e:f eelse:f swhile f:if s % f 0 and e % f 0:print(f)breakelse:f f - 1 轉載于:https://www.cnblogs.com/wumac/p/567…

竇學計算機基礎期末考試,關于新生開學考計算機基礎

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓單選題練習1&#xff0e;完整的計算機系統由( c )組成。A&#xff0e;運算器、控制器、存儲器、輸入設備和輸出設備B&#xff0e;主機和外部設備C&#xff0e;硬件系統和軟件系統D&#xff0e;主機箱、顯示器、鍵盤、鼠標、打印機…

AIX配置Volumn

我們知道&#xff0c;現在操作系統都具有默認的卷管理系統來管理磁盤。詳見存儲技術之卷管理和文件系統。總體來說&#xff0c;從下向上分為物理磁盤(PV)、邏輯卷組(VG)、邏輯卷(LV)&#xff0c;用戶可以直接mount的是邏輯卷。本文記錄一些AIX下的卷管理和配置方法。 AIX下的Vo…

高并發內存占用持續下降_師兄,為什么刪除數據后,Redis內存占用依然很高?...

前言上周剛來了個應屆小師弟&#xff0c;組長說讓我帶著&#xff0c;周二問了我這樣一個問題&#xff1a;師兄啊&#xff0c;我用top命令看了下服務器的內存占用情況&#xff0c;發現Redis內存占用嚴重&#xff0c;于是我就刪除了大部分不用的keys&#xff0c;為什么內存占用還…

如何打印出給定尺寸的方格_打印給定號碼的表格| 8085微處理器

如何打印出給定尺寸的方格Problem statement: 問題陳述&#xff1a; Write an assembly language program in 8085 to print the table of input integer. 在8085中編寫匯編語言程序以打印輸入整數表。 Assumptions: Suppose the inputted number is at memory location 2050…

maka如何看html文件,自己在MAKA上做得H5,別人如何能看到收集的信息

1。登陸1。 ? ?登陸入口&#xff1a;點擊首頁右上角“登錄”按鈕進入登錄界面&#xff1b;2。 ? ?登陸界面&#xff1a;輸入有效注冊的個人賬號信息&#xff1a;郵箱、密碼&#xff1b;您也可以選擇QQ等第三方登錄。3。 ? ?密碼找回&#xff1a;進入賬戶登錄界面&#xf…

發現保存GIF格式后相素發生變化咋辦

數學公式編輯器MathType主要的作用就是編輯公式用的&#xff0c;一些用戶朋友編輯完公式希望把公式保存為“高分辨率”的GIF格式&#xff0c;但是在圖片查看器中進行瀏覽查看時發現GIF的分辨率發生了變化&#xff0c;對于這種情況該如何處理呢&#xff1f;下面我們就針對這個問…

3個階段 項目征名_2020年即將上線的3個爆款,或許它們能改變現有的手游格局...

在近幾年國內的手游市場中&#xff0c;基本都被《王者榮耀》和吃雞類型的給壟斷了&#xff0c;偶爾有個別爆款出現&#xff0c;也只是曇花一現&#xff0c;連半年時間都堅持不到&#xff0c;就比如去年的自走棋。不過在2020年&#xff0c;以王者和吃雞為主的這種格局或許會被打…

python判斷素數程序_使用面向對象方法檢查素數的Python程序

python判斷素數程序This program will check whether a given number is Prime or Not, in this program we will divide the number from 2 to square root of that number, if the number is divided by any number in b/w then the number will not be a prime number. 該程…

湖北計算機技能高考專科學校排名,湖北2021年技能高考專科錄取分數線

https://forms.ebdan.net/ls/wg2YPHOQ點擊查看全部院校武漢船舶職業技術學院&#xff1a;技能高考(機械類)507技能高考(電氣電子類)437技能高考(計算機類)532技能高考(財經類)530技能高考(建筑設計類)319技能高考(旅游類)489技能高考(汽車維修類)466湖北科技職業學院&#xff1…

定位樣式

Web頁面中的特殊效果&#xff0c;如菜單效果&#xff0c;對話框效果都需要通過定位屬性來實現。定位樣式position屬性可以控制元素的定位類型position屬性值可以為sataic、fixed、absolute、relativeposition屬性的語法結構- position:value;定位屬性static默認值。沒有定位&am…

c#異常處理_C#異常處理能力問題和解答 套裝2

c#異常處理1) There are the following statements that are given below, which is correct about an exception in C#.NET? The exception occurs at the time of compilationThe exception occurs during program loadingThe exception occurs during JIT compilationThe …

考慮題4所示的日志記錄_[南開大學]18秋學期(1703)《數據庫基礎與應用》在線作業...

18秋學期(1703)《數據庫基礎與應用》在線作業一、單選題&#xff1a;1.[單選題]在SQL語言中&#xff0c;模式對應于() (滿分:)A. 視圖和部分基本表B. 基本表C. 存儲文件D. 物理磁盤正確答案:——B——2.[單選題]在數據庫系統中&#xff0c;讀臟數據是指一個事務讀了另…

數字圖像處理圖像反轉的實現_反轉8位數字| 8085微處理器

數字圖像處理圖像反轉的實現Problem statement: 問題陳述&#xff1a; To reverse 8 bits number using 8085 microprocessors. 使用8085微處理器反轉8位數字。 Algorithm: 算法&#xff1a; Load the accumulator with the first data. 向累加器加載第一個數據。 Use RLC i…

計算機控制z反變換公式,第三章 計算機控制系統的數學描述(修正Z變換).ppt

第三章 計算機控制系統的數學描述(修正Z變換)* 3.4 修改Z變換 1&#xff0e;具有多采樣頻率系統 在某些控制系統中&#xff0c;存在著不同采樣頻率的采樣開關&#xff0c;如圖3.10所示。 圖3.10 具有不同采樣頻率系統結構圖 圖3.10表示&#xff0c;該系統反饋回路的采樣頻率高一…