如何清理未经解码已转换为字符串的二进制文件?
How to cleanup binary that has been converted to string without decoding?
有没有一种干净的方法可以将错误转换的二进制字符串恢复为二进制以对其进行解码?我在 csv 文件中有这些 headers,如下所示:
import pandas as pd
tsv_file="C:\Users\ruser\Downloads\mydata.tsv"
tsv_table=pd.read_table(tsv_file,sep='\t')
print(tsv_table.columns)
>>> Index(['b'time (s)'', 'b'Red (mN)'', 'b'Blue (mN)'', 'b'Green (mN)'',
'b'Pink (mN)''],
dtype='object')
我想要一种无需字符串处理的干净方式来处理此问题。有办法吗?
编辑:
我很乐意使用
tsv_table.colums.str.decode('utf-8')
但它不是 utf-8 格式,对吗?这是一个字符串。我们只得到 Nan 的
print(csv_table.columns.str.decode('utf-8'))
Float64Index([nan, nan, nan, nan, nan], dtype='float64')
编辑 2:
mydata.tsv
b'time (s)' b'Red (mN)' b'Blue (mN)' b'Green (mN)' b'Pink (mN)'
0.0 28.0393760805021 29.350510817307736 0.5422318347392547 1.1041605247641542
0.010000008061766026 1.1736308159200206 29.327035757211547 0.5235093941717537 1.1041605247641542
0.02000001612353205 1.1736308159200206 29.373985877403868 0.5422318347392547 1.1425474154873996
这通过将 Python 语法字符串转换为实际的字节字符串,然后对其进行解码来实现:
import pandas as pd
import ast
table = pd.read_table('mydata.tsv',sep='\t')
table.columns = [ast.literal_eval(x).decode('utf8') for x in table.columns]
print(table)
time (s) Red (mN) Blue (mN) Green (mN) Pink (mN)
0 0.00 28.039376 29.350511 0.542232 1.104161
1 0.01 1.173631 29.327036 0.523509 1.104161
2 0.02 1.173631 29.373986 0.542232 1.142547
有没有一种干净的方法可以将错误转换的二进制字符串恢复为二进制以对其进行解码?我在 csv 文件中有这些 headers,如下所示:
import pandas as pd
tsv_file="C:\Users\ruser\Downloads\mydata.tsv"
tsv_table=pd.read_table(tsv_file,sep='\t')
print(tsv_table.columns)
>>> Index(['b'time (s)'', 'b'Red (mN)'', 'b'Blue (mN)'', 'b'Green (mN)'',
'b'Pink (mN)''],
dtype='object')
我想要一种无需字符串处理的干净方式来处理此问题。有办法吗?
编辑: 我很乐意使用
tsv_table.colums.str.decode('utf-8')
但它不是 utf-8 格式,对吗?这是一个字符串。我们只得到 Nan 的
print(csv_table.columns.str.decode('utf-8'))
Float64Index([nan, nan, nan, nan, nan], dtype='float64')
编辑 2:
mydata.tsv
b'time (s)' b'Red (mN)' b'Blue (mN)' b'Green (mN)' b'Pink (mN)'
0.0 28.0393760805021 29.350510817307736 0.5422318347392547 1.1041605247641542
0.010000008061766026 1.1736308159200206 29.327035757211547 0.5235093941717537 1.1041605247641542
0.02000001612353205 1.1736308159200206 29.373985877403868 0.5422318347392547 1.1425474154873996
这通过将 Python 语法字符串转换为实际的字节字符串,然后对其进行解码来实现:
import pandas as pd
import ast
table = pd.read_table('mydata.tsv',sep='\t')
table.columns = [ast.literal_eval(x).decode('utf8') for x in table.columns]
print(table)
time (s) Red (mN) Blue (mN) Green (mN) Pink (mN)
0 0.00 28.039376 29.350511 0.542232 1.104161
1 0.01 1.173631 29.327036 0.523509 1.104161
2 0.02 1.173631 29.373986 0.542232 1.142547