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 *ƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ

表示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.mzph.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;该系统反馈回路的采样频率高一…