首页 > 解决方案 > 遍历逗号分隔的整数文件以使用 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)

print(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',

我将如何阅读每一行然后将它们打印在新行而不是同一行上,因为我有几行像上面一样,但它们都在一行上输出。此外,让 chr() 函数工作的最佳方法是什么,因为当我尝试 print(x) 时遇到此错误:

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)

如果有人可以提供帮助,我将不胜感激,如果您从来没有直接告诉我答案,因为我正在努力学习,如果您能指出我能够自己解决问题的方向,我将不胜感激。

谢谢

标签: pythonpython-3.x

解决方案


  1. 创建一个list来存储值
  2. split通过,分别获取值
  3. str将列表中的每个转换为int
  4. 遍历list以获得charequi

数字.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
-
.
.

编辑(较短的版本)

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', '10\n']
['#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '.', 'd', 'o', '-', '"', '"', '"', '"', '"', "'", '-', 'o', '.', '.', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '\n']

编辑 2

如果要将每个值映射到它的chareqvui (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': "'", '10\n': '\n'}

推荐阅读