通过逗号分隔的整数文件迭代以使用chr()函数



我当前正在尝试编写一件代码,该代码允许我获取数字文件并能够使用Chr()函数将数字转换为他们的Unicode等效。

这是我到目前为止所拥有的:

readFile = "numbers.txt"
with open(readFile) as f:
   num = f.readlines()
   print(num)
   for x in num[:]:
      x = chr(x)
      print(x)

打印(num)给了我这个:

['35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,100,111,45,34,34,34,34,34,39,45,111,46,46,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,10,n',

我将如何读取每条线,然后在新线上而不是同一行上打印它们,因为我有几行,但它们都在一行上输出。此外

Traceback (most recent call last):
File "C:/Users/Ethan/Desktop/EthanWork/Python/Python Projects/Uni 
 Work/asciiNumToChar/Main.py", line 7, in <module>
   x = chr(x)
TypeError: an integer is required (got type str)

如果有人能提供帮助,我会非常感谢它,如果您从不直接告诉我答案,我会很感激,因为我试图学习是否可以指出我的方向,以便我自己解决它,我会是非常感谢。

谢谢

  1. 创建一个list来存储值
  2. split by ,分别获取值
  3. 将列表中的每个str转换为int
  4. list上迭代以获取char Equi

nubmess.txt

35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,46,100,111,45,34,34,34,34,34,39,45,111,46,46,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,10

因此

readFile = "numbers.txt"
numList = []
with open(readFile) as f:
   lines = f.readline()
for line in lines.split(","):
   # print(line)
   numList.append(line)
for x in numList:
    print(chr(int(x)))

输出

#
#
#
#
#
.
.
.
d
o
-
.
.

edit(shorter ver)

readFile = "numbers.txt"
numList = []
chr_list = []
with open(readFile) as f:
   lines = f.readline()
for line in lines.split(","):
   numList.append(line)
   chr_list.append(chr(int(line)))
print(numList)
print(chr_list)

输出

['35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '46', '100', '111', '45', '34', '34', '34', '34', '34', '39', '45', '111', '46', '46', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '35', '10n']
['#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '.', 'd', 'o', '-', '"', '"', '"', '"', '"', "'", '-', 'o', '.', '.', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', 'n']

编辑2

如果要将每个值映射到其char EQVUI (key : val),则可能是dict方法很有用:

dict_ = {}
with open(readFile) as f:
   lines = f.readline()
for line in lines.split(","):
   dict_[line] = chr(int(line))
print(dict_)

输出

{'35': '#', '46': '.', '100': 'd', '111': 'o', '45': '-', '34': '"', '39': "'", '10n': 'n'}

最新更新