【问题标题】:Python - Remove Square symbol from text stringPython - 从文本字符串中删除方形符号
【发布时间】:2014-03-29 17:05:06
【问题描述】:
a='ÿþ"[]B[]a[]l[]a[]n[]c[]e'

注意:左方括号和右方括号代表这个方符号。但是,我无法将方形符号复制并粘贴到此处以准确显示我正在查看的内容。

“a”中的字符代表我下载的文件的开头。它是一个 csv 文件,unicode。如何删除这些不需要的字符?我只想从a中恢复“平衡”这个词。

我用来简单这个例子的代码:

fi = open(path+fn, 'r')
data = fi.read()
fi.close()
print(data)

fn 是一个 csv 文件。

试过了:

data=data.encode()
d=replace('\x00','')

产生错误:

TypeError: expected bytes, bytearray or buffer compatible object

【问题讨论】:

  • 我不懂 Python,但 ÿþ 是一个 utf-16 BOM,所以在打开文件时寻找一种指定编码的方法

标签: python csv python-3.x unicode


【解决方案1】:

您需要在打开文件时指定正确的编码。试试

open(path+fn, 'r', encoding="utf-16")

(我猜是 utf-16,因为 ASCII 字符似乎在示例字符串中被编码为两个字节)

【讨论】:

  • 正确。正是我想要的。不错。
【解决方案2】:

如果您不想乱用编码,string.printable 是一个“可打印”字符列表,可能正是您要查找的内容。

>>> from string import printable
>>> best_string_ever = filter(lambda x: x in printable, a)
>>> best_string_ever
'"Balance'

【讨论】:

    【解决方案3】:

    如果可以显示字符值,那么可以使用strip(u'\uxxx')命令

    使用 replace() 方法

    newstring = textstring.replace(u'\uxxx', '')
    

    在这种情况下,传入您想要的实际字符编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2017-03-19
      • 2016-11-22
      • 2018-06-08
      • 2019-12-27
      • 2014-07-20
      • 1970-01-01
      相关资源
      最近更新 更多