python - 遍历逗号分隔的整数文件以使用 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)
如果有人可以提供帮助,我将不胜感激,如果您从来没有直接告诉我答案,因为我正在努力学习,如果您能指出我能够自己解决问题的方向,我将不胜感激。
谢谢
解决方案
- 创建一个
list
来存储值 split
通过,
分别获取值str
将列表中的每个转换为int
- 遍历
list
以获得char
equi
数字.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:
如果要将每个值映射到它的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': "'", '10\n': '\n'}
推荐阅读
- php - 如何打印在codeigniter的其他表中多次使用的主键名称
- pytorch - 在 pytorch 中保存模型时,某些参数未保存
- gembox-spreadsheet - PDF转换问题
- multithreading - 偶然的多线程,但不是单线程,Bug (Common Lisp)
- javascript - 如何使用 args 作为 json 字段
- scala - Spark 按列值对数据集进行分区
- reactjs - 选择数据表中的行(mui-datatable)
- postgresql - Sequelize 模型关联 - 缺少外键
- java - ActiveMQ - 无法回滚非事务会话 INVIDUAL_ACK
- extjs - ExtJS Modern - 选择器 setData 方法不起作用