【问题标题】:Splitting text file in Python - delimeter issue在 Python 中拆分文本文件 - 分隔符问题
【发布时间】:2019-06-10 14:28:46
【问题描述】:

我尝试按分隔符分割文件:"}.,但找不到分隔符,因此我只得到一个与原始文件内容相同的新文件。代码是:

with  open('okladki_200_01') as fp:
    contents = fp.read()

    i = 1
    for entry in contents.split('"}.'):

        f= open("okladka_%s" % i,"w+")
        f.write(entry)
        f.close()
        i += 1

你能帮忙吗?

编辑: 文件内容如下:

{"base64Image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAusFMADASIA\nAhEBAxEB/8QAHwAAAgIBBQEBAAAAAAAAAAAAAgQAAwUBBgcICQoL/8QAaRAAAQEFBAcDBwgHBQYD\nAwEZAwIBBBESEwAhIiMFFDEyM0FDUVNhBiRCY3GBkQcIFTRSc6GxRGKDk8HR8FRyo+HxCRYlZLPD\ndILTFzWEkp [...] 3aIiVoL1pmNQxjWr27\nPBnhatT94NfdwDzDBz9aSP/Z\n","elementHashcode":-1794239528,"imageOrientation":6,"type":"BOOK"}
{"base64Image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB

我想我刚刚发现了问题... HxD 查看器将 0x0A ASCII 字符显示为一个点,但它是换行符。所以我应该找'"}\n'

【问题讨论】:

  • 您能否发布该文件的 sn-p,以便我们验证发生了什么问题?
  • 第 2 行有缩进问题,最后一个 fp.close()with 是多余的。无需关闭文件两次。
  • @GreenCloakGuy 这是示例文件 (30 MB) filedropper.com/okladki30001
  • 你试过'''"}.'''吗?

标签: python-3.x file split


【解决方案1】:

将 contents.split('"}.') 移动到它自己的变量中。

lines = contents.split('.}"')

for entry in lines: 
    ...

代码:

with  open('textfile') as fp:
    contents = fp.read()

i = 1

lines = contents.split('.}"')

for entry in lines: 
    f= open("textfile_%s" % i,"w+")
    f.write(entry)
    f.close()
    i += 1

fp.close()

【讨论】:

    【解决方案2】:

    你真的需要检查括号吗?在您的情况下,您的输入文件似乎已经格式化为 1 内容 = 1 行,因此我们的分隔符可以是 \n 而我们可以使用 readlines()

    这是一个可能的解决方案:

    with  open('okladki_200_01') as fp:
        lines = fp.readlines() # this is a list of strings.
    
        i = 1
        for line in lines:
            entry = line.lstrip("{").rstrip("}\n") # some clean-up.
            f = open("okladka_%s" %i ,"w+")
            f.write(entry)
            f.close()
            i += 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多