为了账号安全,请及时绑定邮箱和手机立即绑定

将字母转换为有值的数字

将字母转换为有值的数字

慕码人8056858 2022-01-05 20:31:03
我是 Python 新手,我是堆栈论坛的新手,但我希望能在这里找到一些运气。我在导入的列表中有一个包含字母 az 的文本文件。一个乙C....我想让数字有一个数值,所以当它打印时它会说类似一 = 1乙 = 2c = 3 ....我怎样才能使这项工作?这就是我所想到的,但这只会打印 txt 文件。f = open('alpha.txt', 'r')file_contents = f.read()print (file_contents)f.close()
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

with open('alpha.txt') as f:

    lines = list(enumerate((line for line in (l.strip() for l in f) if line),start = 1)) # also skip empty lines

    for item in lines:

        print ("{}={}".format(item[1],item[0]))

输出:


a=1

b=2

c=3

或者:


with open('alpha.txt') as f:

    for line in enumerate(f,start = 1):

        print("{}={}".format(line[1][0], line[0]))

输出:


a=1

b=2

c=3

或者


with open('test.txt') as f:

   for idx, line in enumerate(f,start = 1):

       print('{}={}'.format(line[0], idx))

输出:


a=1

b=2

c=3


查看完整回答
反对 回复 2022-01-05
?
侃侃无极

TA贡献2051条经验 获得超10个赞

您可以通过调用ord()字符将字母转换为其数值。


ord('a')将等于 97。如果你想偏移你的字符从 1 开始,你可以减去 96,或者你可以使用类似的东西offset = ord('a')-1来让它更有活力。


import string # dont need to import for your version

letters = string.ascii_letters[:26] # lowercase letters for testing


offset = ord('a') - 1

for letter in letters:

输出:


a = 1

b = 2

c = 3

d = 4 

等等。


编辑:我的解决方案与其他解决方案的不同之处在于我实际上是将每个字母转换为其值。如果您只想在解决方案出现时对其进行编号,那么我的解决方案将是错误的。


例如,如果给定


letters =  ['b', 'c', 'a']

我的解决方案将输出


b  =  2

c  =  3

a  =  1

其他发布的解决方案仍将编号字母


b = 1

c = 2

a = 3


查看完整回答
反对 回复 2022-01-05
?
绝地无双

TA贡献1946条经验 获得超4个赞

你也可以使用stringlib:


[print(c, '=', i+1) for i, c in enumerate(string.ascii_lowercase)]

输出:


a = 1

b = 2

c = 3

d = 4

e = 5

等等。


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信