Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Excel分隔文件_Python_Macos_Excel_Delimiter_Textedit - Fatal编程技术网

Python Excel分隔文件

Python Excel分隔文件,python,macos,excel,delimiter,textedit,Python,Macos,Excel,Delimiter,Textedit,我有一个excel文件,其中包含我需要在电脑上处理的多列不同宽度的数据。但是,该文件包含SOH和STX字符作为分隔字符,因为它们来自Mac上的TextEdit。SOH是记录分隔符,STX是行分隔符。在我的电脑上,这两个字符都显示为矩形(在屏幕截图中)。我无法使用固定宽度分隔选项,因为我将丢失数据。我尝试编写一个Python脚本,但是Python也不识别SOH和STX,只是将其显示为一个矩形。如何适当地划分这些记录?如果有任何可能的方法,我将不胜感激。 谢谢 这应该行得通 SOH='\x01'

我有一个excel文件,其中包含我需要在电脑上处理的多列不同宽度的数据。但是,该文件包含SOH和STX字符作为分隔字符,因为它们来自Mac上的TextEdit。SOH是记录分隔符,STX是行分隔符。在我的电脑上,这两个字符都显示为矩形(在屏幕截图中)。我无法使用固定宽度分隔选项,因为我将丢失数据。我尝试编写一个Python脚本,但是Python也不识别SOH和STX,只是将其显示为一个矩形。如何适当地划分这些记录?如果有任何可能的方法,我将不胜感激。 谢谢

这应该行得通

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)

你想要什么?读数值?回信?只是展示?请详细说明。显示你的代码!我希望这些值以适当的分隔格式写回Excel文件或任何新文件。我编写的脚本是只读取文件内容的基本脚本,即file.read()。您应该能够通过Python中的ASCII值引用SOH和STX控制字符:
'\x01'
,以及
'\x02'
。显然,
csv
模块实际上不支持自定义行结尾(它通过硬编码查找
'\n'
'\r'
)的组合),但我不相信您的文本除了STX之外没有实际的换行符,因为您的数据在屏幕截图中显示在多行上。你能提供一些实际的文本数据,而不仅仅是编辑器中的屏幕截图吗?我不能在Python中引用ASCII中的SOH和STX。我试过了,但没什么区别。我已经在上面的原始帖子中添加了一些实际的文本数据。@Nathan822:嗯,这是另一个屏幕截图,不是文本。我希望我可以复制和粘贴文本!我提供了读写文件的函数。你需要使用它们!NameError:未定义全局名称“read”。第8行,用于read.split(SOH+STX)中的行:应该是rawdata.split吗?是的,应该是。我在这里直接编写了代码,因此可能会有一些错误。作为奖励,我修改了
read_lines
函数作为生成器,而不是一次性返回整段数据。