【问题标题】:Obtain a list from a string removing all non-alphanumeric characters从删除所有非字母数字字符的字符串中获取列表
【发布时间】:2018-03-07 23:01:33
【问题描述】:

我从一个文件中提取了这个字符串:

my_string = '\x01\x00\x0e\x00\xff\xff\xffPepe A\x00\xc4\x93\x00\x00100000\x00\xff\xff\xffNu\xf1ez Jim\xe9nez\x00\xf41\x00'

我需要通过删除所有非字母数字字符或空格来清理该字符串,所以它看起来像这样:

['Pepe A','100000','Nuñez Jiménez','1']

到目前为止,我已尝试使用以下代码:

split_string = re.split(r'[\x00-\x0f]', my_string)
result_list = filter(None, split_string)

但我没有得到我需要的结果。有人可以给我一些想法吗?我正在使用 Python。

【问题讨论】:

  • 问题是您已经决定要查看 \x7f 到 \xff 范围内的某些字符(例如,您希望将 \xe9 解释为 é)而不是其他字符(例如,您不想将 \xf4 解释为 ô 或将 \xff 解释为 ÿ)。您将不得不决定 ISO 8859-1 编码中的哪些字符是您想看到的字符,以及您想将哪些字符视为垃圾。这是无法自动完成的。

标签: python


【解决方案1】:

这样的事情会让你接近:

代码:

re.split(r'ÿÿÿ|AÄ|ô', ''.join(ch for ch in my_string if ch.isalnum() or ch == ' ')))

测试代码:

import re

my_string = '\x01\x00\x0e\x00\xff\xff\xffPepe A\x00\xc4\x93\x00\x00100000' \
            '\x00\xff\xff\xffNu\xf1ez Jim\xe9nez\x00\xf41\x00'

print(re.split(r'ÿÿÿ|AÄ|ô', ''.join(ch for ch in my_string
                                    if ch.isalnum() or ch == ' ')))

结果:

['', 'Pepe ', '100000', 'Nuñez Jiménez', '1']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-30
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2022-01-09
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多