【问题标题】:Unicode manipulation and garbage '[]' charactersUnicode 操作和垃圾 '[]' 字符
【发布时间】:2018-01-28 16:04:13
【问题描述】:

我有一个 4GB 的文本文件,我什至无法加载以查看它,所以我试图将它分开,但我需要一次处理一点数据。

问题是我得到了这些垃圾白色垂直矩形字符,我无法在搜索引擎中搜索它们是什么,因为它不会粘贴,我也无法摆脱它们。 它们看起来像这些方括号“[]”,但中间没有那么小的空间。 它们的 Unicode 值不同,所以我不能只选择一个值并摆脱它。 我想摆脱所有这些矩形。

还有两个问题。

1) 为什么这里(在下面的 img 中)有任何 Unicode 字符?我解码了它们。我错过了什么?注意:稍后我得到的字符串输出看起来像一个普通字符串,例如“code1234”等,但那里也有那些 Unicode 异常。

2) 你能明白为什么更大的end 值会得到这个异常list index out of range 吗?这只发生在range 的末尾并且它不是恒定的,即如果end 是 100,那么最后 5 个可能会抛出该异常,但如果 end 是 1000,那么只有最后一个假设 10 抛出该异常.

一些代码:

from itertools import islice

def read_from_file(file, start, end):
    with open(file,'rb') as f:
        for line in islice(f, start, end):
            data.append(line.strip().decode("utf-8"))
    for i in range(len(data)-1):
        try:
            if '@' in data[i]:
                a = data.pop(i)
                mail.append(a)
            else:
                print(data[i], data[i].encode())
        except Exception as e:
            print(str(e))

data = []
mail = []
read_from_file('breachcompilationuniq.txt', 0, 10)

一些输出: Image link here as it won't let me format after pasting.

There's also this stuff later on, I don't know what these are either.

【问题讨论】:

  • 如果您将文件作为二进制文件打开,您将获得字节。如果是文本,您可能不应该以二进制形式打开。
  • 我不知道文件的结构。如果我不以字节形式打开它,则会给出UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 2560: character maps to <undefined> @adr 的错误
  • 矩形,您可以看到它是 ASCII 表中较低字节的占位符(代码从 001F 的字节也称为不可打印字符,请参阅:upload.wikimedia.org/wikipedia/commons/thumb/1/1b/…)。此类符号在标准字体中没有正确的表示。

标签: python-3.x unicode


【解决方案1】:

您的文本文件似乎不是 python (UTF-8) 假定的默认编码,但仍然使用 128-255 范围内的字节值。试试:

f = open(file, encoding='latin_1')
content = f.read()

【讨论】:

  • 我在发帖前已经尝试过 utf-8 和 latin_1 并且没有其他(如果还有其他),latin_1 的结果与 utf-8 相同
  • 如果流中有不可打印的字节,则它不是纯文本文件。这些字节也不是任何形式的编码。第二张图片包含 HTML 实体。
  • 您可以打开和读取任何使用“latin-1”编码的文件,尽管内容可能不正确。 'utf-8' 不能这样说,所以不清楚你到底尝试了什么以及为什么它可能失败了。
猜你喜欢
  • 2010-12-07
  • 2019-04-16
  • 2016-03-14
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2021-02-22
  • 2015-07-11
相关资源
最近更新 更多