Python解决大规模二进制数据错位问题描述解决方法实验代码最终代码

问题描述

有一些二进制数据,每八位按顺序存为一个十进制数保存成CSV文件,每行为一个二进数数据,每个单元格均为一个十进制数。若数据为0000 0001 1000 0000,在CSV的一行中则存为1,128\n。 现发现存储错位,需要将每个数据整体向左移位2位并保存成以上描述的格式

解决方法

  • 将每个行数据读出并将每个十进制转换为8位二进制数的字符串(同时使用切片去除开头的二进制数标识)
  • 将字符串整体连接起来,切去开头两个0并在结尾连接一个00
  • 重新将字符串切片,并转换

实验代码

#读取数据
 with open("./ramdata_brockenline.csv") as file_point:
     content_list = [x.split(",") for x in file_point.read().split("\n")]

 input_data = []
 for content in content_list[:-1]:
     #转换为字符串并进行移位
     int_list = "".join([bin(int(x))[2:].zfill(8)
                         for x in content[1:]])[2:] + "00"
     #切片
     bin_list = [int(int_list[i: i + 8], 2) for i in range(0, len(int_list), 8)]
     input_data.append([content[0], bin_list])
 
 #打印出结果
 for x in input_data:
     print(x)
 print(len(input_data))

最终代码

class InputCSVHandle(object):
    """docstring for InputCSVHandle"""

    def __init__(self, FilePath):
        super(InputCSVHandle, self).__init__()
        self.FilePath = FilePath
        self.InputData = self.InputHanlde(self.CSVReader())

    def CSVReader(self):
        with open(self.FilePath, "r") as file_point:
            return [x.split(",")
                    for x in file_point.read().split("\n")]

    def InputHanlde(self, content_list):
        input_data = []
        for content in content_list[:-1]:
            int_list = "".join([bin(int(x))[2:].zfill(8)
                                for x in content[1:]])[2:] + "00"
            bin_list = [int(int_list[i: i + 8], 2)
                        for i in range(0, len(int_list), 8)]
            input_data.append([content[0], bin_list])
        return input_data

if __name__ == '__main__':
    test = InputCSVHandle("./ramdata_brockenline.csv")
    print(test.InputData)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏日常学python

python爬虫常用库之BeautifulSoup详解

这是日常学python的第16篇原创文章 经过了前面几篇文章的学习,估计你已经会爬不少中小型网站了。但是有人说,前面的正则很难唉,学不好。正则的确很难,有人说...

30970
来自专栏大数据钻研

从0到1去转型到大数据圈子

前言:对于一个陌生的领域,最重要的还是方向,有人引导那会更好,把有限的时间花在必要的事上,做一件正确的事。 说明:这篇文章是新年后的第一篇文章,算是微信互动问答...

31180
来自专栏数据派THU

手把手教你用Python进行回归(附代码、学习资料)

作者: GURCHETAN SINGH 翻译:张逸 校对:丁楠雅 本文共5800字,建议阅读8分钟。 本文从线性回归、多项式回归出发,带你用Python实现样...

69860
来自专栏机器学习算法与Python学习

干货 | Python 爬虫的工具列表大全

源 | 伯乐头条 | 小象 这个列表包含与网页抓取和数据处理的Python库。 网络 通用 urllib -网络库(stdlib)。 requests -网络...

36690
来自专栏目标检测和深度学习

排序算法算法对比

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。...

37160
来自专栏灯塔大数据

技术 | Python从零开始系列连载(十二)

导读 为了解答大家初学Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~ 上一期学习...

417150
来自专栏java学习

数据库每日一练(2017/8/1)

本期题目: 1、谈谈final, finally, finalize的区别。 2、HashMap和Hashtable的区别。 3、Collection 和 C...

27660
来自专栏日常学python

使用requests+BeautifulSoup的简单爬虫练习

这是日常学python的第17篇原创文章 上篇文章说了BeautifulSoup库之后,今篇文章就是利用上篇的知识来爬取我们今天的主题网站:猫眼电影top100...

30460
来自专栏大数据钻研

独访二十年大数据工程师的中肯意见!

今天有幸访问到一名资深大数据工程师,为我们解答许多心中疑问! TalkingData是中国最大的独立第三方移动数据服务平台 一、TalkingData公司目...

34850
来自专栏ThoughtWorks

JavaScript专家开课啦。

Hi好久不见的大家,雷小达想死你们了! 今天带来三个JavaScript的内容,让大家一把过足瘾。在西安办公室有一个JavaScript方面的专家,最近他的...

678110

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励