将字母转换为有价数字

时间:2019-04-10 12:52:35

标签: python

您好,我是python的新手,还是栈论坛的新手,但我希望在这里能找到运气。

我要导入的列表中有一个包含字母a-z的文本文件。

a

b

c

..

..

我想使数字具有数字值,因此在打印时会说类似

a = 1

b = 2

c = 3 ..

..

我该如何做?

这就是我的意思,但这只会打印txt文件。

f = open('alpha.txt', 'r')
file_contents = f.read()
print (file_contents)
f.close()

4 个答案:

答案 0 :(得分:0)

也许是这样的:

with open('alpha.txt', 'r') as f:
    for idx, line in enumerate(f):
        print('{letter} = {number}'.format(letter=line, number=idx + 1)

一些注意事项:

  • with语句使之成为现实,无论发生什么情况,您都不必担心关闭文件,因为它会在代码块末尾自动关闭。
  • enumerate为可迭代项的每一项(在本例中为文件的每一行)提供一个索引(从0开始)。
  • 我正在使用format string以一种可读的方式格式化输出。

答案 1 :(得分:0)

您还可以使用string lib:

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

输出:

a = 1
b = 2
c = 3
d = 4
e = 5

答案 2 :(得分:0)

您可以通过在字符上调用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 

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

例如,如果给定

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

我的解决方案将会输出

b  =  2
c  =  3
a  =  1

在其他已发布的解决方案中,仍将字母编号

b = 1
c = 2
a = 3

答案 3 :(得分:0)

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