python - 将字符串列表从文本文件转换为 int 数组
问题描述
{'00': ['000011110000111111110000',
'000011110000111111110000',
'000011110000111111110000',
'000010000000111000000000',
'111110000111111000000111',
'111110000111111000000111',
'111110000111111000000111',
'111001111111111000000111',
'000001110000000000000111',
'000011110000000011111111',
'000011110000000011111111',
'000011110000000011111111',
'111111110000000011110000',
'111111110000000011110000',
'111111110000000011110000',
'111000000000000010000000',
'111000000111111110000111',
'111000000111111110000111',
'111000000111111110000111',
'111000000111111001111111',
'000000000111000001110000',
'000011111111000011110000',
'000011111111000011110000',
'000011111111000011110000'],
'01': ['01111111000000',
'01111111000000',
'01111111000000',
'01110000000000',
'01110000000000',
'01110000000000',
'11110000000111',
'11110000000111',
'11110000000111',
'00000000000111',
'00000111111111'],
'02': ['0000111100',
'0000111000',
'1111111001',
'0000000111',
'0000000111',
'0000000111',
'0010000100',
'0001000100',
'0000000100',
'0000000100']}
我有一个看起来像这样的文本文件。我希望输出文件只从字典中提取值并将它们写入另一个数组。而且它应该与它们现在出现的顺序相同。所以 00 的数组应该首先出现,然后是 01,02,依此类推。输出 00-
['000011110000111111110000','000011110000111111110000','000011110000111111110000','000010000000111000000000','111110000111111000000111','111110000111111000000111','111110000111111000000111','111001111111111000000111','000001110000000000000111','000011110000000011111111','000011110000000011111111','000011110000000011111111','111111110000000011110000','111111110000000011110000','111111110000000011110000','111000000000000010000000','111000000111111110000111','111000000111111110000111','111000000111111110000111','111000000111111001111111','000000000111000001110000']
输出 01-
['01111111000000','01111111000000','01111111000000','01110000000000', '01110000000000','01110000000000','11110000000111','11110000000111','11110000000111', '00000000000111','00000111111111']
我尝试使用 json 来解决这个问题,但显然每个元素都是一个列表,它不起作用。
解决方案
我很惊讶 Python 的json
模块不适合你,所以我将你的输入存储在一个名为的文件中sample.json
并自己尝试了。
问题是你的 json 没有按照 Python 期望的方式格式化。它使用单引号('
)而不是双引号("
)来分隔字符串。在我的文本编辑器中打开文件并用双引号替换所有单引号后,Python3 的json
模块对我来说工作得很好。这是我的 Python shell 会话:
>>> import json
>>> with open('./sample.json', 'r') as jfile:
j = json.load(jfile)
>>> j['02']
['0000111100', '0000111000', '1111111001', '0000000111', 00000111',
'0000000111', '0010000100', '0001000100', '0000000100', 000000100']
现在我可以打开输出文件 ( output.json
) 并将我的列表写入其中。
>>> with open('./output.json', 'w') as outfile:
outfile.write(str(j['01'])) # Remember to convert the list to a string!
198
退出 python shell 后,列表就在它所属的位置:
$ cat output.json
['01111111000000', '01111111000000', '01111111000000', '01110000000000',
'01110000000000', '01110000000000', '11110000000111', '11110000000111',
'11110000000111', '00000000000111', '00000111111111']
也许您现在想再给json
模块一次机会?当然,它的输入有点挑剔。但是,一旦您对它感到满意,它将使您对数据的工作比手动切片和切块更清晰、更简单、更不容易出错。
推荐阅读
- java - 为什么不能将数据持久化到数据库中
- react-native - React Native Android TV - 使用遥控器导航时屏幕上的两个元素同时聚焦
- python - Asyncio 第二次使用不同的输入运行相同的任务也会关闭第一个任务
- visual-studio - 编辑 sql 文件时出现光标错误
- reactjs - Why do I have problem rendering this conditional JSX?
- php - 将参数传递给php中的补丁函数
- sql - 出现错误“时间数据比较应具有相同的数据类型”。
- g++ - g ++静态分析:-fanalyzer的误报?
- android - 有没有办法检测android相机是否真实?
- performance - 灯塔得分。它是否测量每个索引页面?