首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何设置以下文本的格式?

如何设置以下文本的格式?
EN

Stack Overflow用户
提问于 2019-06-05 02:29:06
回答 3查看 60关注 0票数 -3

我有这样的文本:

代码语言:javascript
复制
[b'897', b'7W', b'7W', b'018', b'0998', b'0000']
[b'897', b'7W', b'7W', b'018', b'0999', b'0000']
[b'897', b'7W', b'7W', b'024', b'0150', b'0000']
[b'897', b'7W', b'7W', b'033', b'1892', b'0000']
[b'897', b'7W', b'7W', b'036', b'0100', b'0000']
[b'897', b'7W', b'7W', b'040', b'0300', b'0000']
[b'897', b'7W', b'7W', b'041', b'0100', b'0000']

如何格式化文本,如结果为:

代码语言:javascript
复制
897 7W 7W 018 0998 0000
897 7W 7W 018 0999 0000
897 7W 7W 024 0150 0000
etc...

我想到了下面这样的东西,但它不起作用,因为有多个东西需要删除:

代码语言:javascript
复制
 data = a.read()
        data = data.replace("", "")
        a.write(data)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-05 02:44:24

使用.join().decode()可以非常简单地做到这一点

代码语言:javascript
复制
lst = [b'897', b'7W', b'7W', b'018', b'0998', b'0000']

b" ".join(lst).decode("utf-8")

输出:

代码语言:javascript
复制
'897 7W 7W 018 0998 0000'

在这种情况下,您需要执行多项操作:

代码语言:javascript
复制
lsts = [[b'897', b'7W', b'7W', b'018', b'0998', b'0000'], [b'897', b'7W', b'7W', b'018', b'0999', b'0000']]

formatted = [b" ".join(lst).decode("utf-8") for lsts in list]

输出:

代码语言:javascript
复制
['897 7W 7W 018 0998 0000', '897 7W 7W 018 0999 0000']
票数 1
EN

Stack Overflow用户

发布于 2019-06-05 02:42:18

从你的帖子看,你似乎有多个"bytes"项目的列表:

代码语言:javascript
复制
>>> l = [b'897', b'7W', b'7W', b'018', b'0998', b'0000']
>>> l
[b'897', b'7W', b'7W', b'018', b'0998', b'0000']
>>> print(l)
[b'897', b'7W', b'7W', b'018', b'0998', b'0000']
>>> l[0]
b'897'

>>> type(l[0])
<class 'bytes'>

字节项需要解码为特定的编码以进行打印,看起来UTF-8将适用于您的数据:

代码语言:javascript
复制
>>> for i in l:
...     print(i.decode("utf-8"))
...
897
7W
7W
018
0998
0000

关于编码,有很多很多事情需要了解,this是一篇经典的(2003)文章,可以帮助您入门。

假设现代Python (Python 3+)

票数 0
EN

Stack Overflow用户

发布于 2019-06-05 02:52:56

您可以使用正则表达式删除除换行符、空格、数字和大写字母以外的所有内容:

代码语言:javascript
复制
data = """[b'897', b'7W', b'7W', b'018', b'0998', b'0000']
[b'897', b'7W', b'7W', b'018', b'0999', b'0000']
[b'897', b'7W', b'7W', b'024', b'0150', b'0000']
[b'897', b'7W', b'7W', b'033', b'1892', b'0000']
[b'897', b'7W', b'7W', b'036', b'0100', b'0000']
[b'897', b'7W', b'7W', b'040', b'0300', b'0000']
[b'897', b'7W', b'7W', b'041', b'0100', b'0000']"""

import re
data = re.sub(r"[^ 0-9A-Z\n]","",data)
print(data) # outputFile.write(data)

897 7W 7W 018 0998 0000
897 7W 7W 018 0999 0000
897 7W 7W 024 0150 0000
897 7W 7W 033 1892 0000
897 7W 7W 036 0100 0000
897 7W 7W 040 0300 0000
897 7W 7W 041 0100 0000

或者,您可以选择单引号之间的值,并使用空格分隔符将它们连接起来:

代码语言:javascript
复制
data = "\n".join( " ".join(re.findall("'([^']*)'",line)) for line in data("\n")) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56449447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档