我有一个excel文件,其中包含我需要在PC上使用的多个宽度不同的列的数据。但是,该文件包含SOH和STX字符作为分隔字符,因为它们来自Mac上的TextEdit。 SOH是记录分隔符,STX是行分隔符。在我的电脑上,这两个字符都显示为一个矩形(在屏幕截图中)。我不能使用固定宽度分隔选项,因为我会丢失数据。我尝试编写Python脚本,但Python也无法识别SOH和STX,只是将其显示为矩形。如何正确划分这些记录?我会很感激任何可能的方法。 谢谢!
答案 0 :(得分:3)
这应该有效
SOH='\x01'
STX='\x02'
# As it is, this function returns the values as strings, not as integers
def read_lines(filename):
rawdata = open(filename, "rb").read()
for l in rawdata.split(SOH + STX):
if not l:
continue
yield l.split(SOH)
# Rows is a list. Each element in the list is a row of values
# (either a list or a tuple, for example)
def write_lines(filename, rows):
with open(filename, "wb") as f:
for row in rows:
f.write(SOH.join([str(x) for x in row]) + SOH + STX)
编辑:使用示例...
for row in read_lines("myfile.csv"):
print ", ".join(row)