【问题标题】:Identify and remove strange characters识别并删除奇怪的字符
【发布时间】:2013-04-14 18:19:17
【问题描述】:

我可以使用什么命令来识别和删除某些构成“单词”的奇怪字符,例如:

í‰äó_
퀌¢í‰ä‰åí‰ä‹¢
it퀌¢í‰ä‰åí‰ä‹¢
í‰äóìgo

来自一系列文件?这些是一些例子...... 我想删除此类事件。

【问题讨论】:

  • 你如何定义“奇怪”?是否要过滤掉不是明确的基本字母 a-z 的字符?
  • 它基本上是一系列在英语中没有意义的字符。标点符号被接受吗? ! .只是那些随机字符一起出现为“单词”
  • 那么您想使用 pythons 字符串模块并检查文件中的行是否包含 string.printable 中的字符。 F3AR3DLEGEND 回答了您提供该选项的问题,看看他的回答

标签: python shell command-line


【解决方案1】:

从文件中获取数据后使用string 模块:

import string
final_str = ''
for char in my_str:
    if char in string.printable:
        final_str += char

替代单线:

''.join([str(char) for char in my_str if char in string.printable])

【讨论】:

  • 我的字符串中有一个文本文件和 �,我想将其从字符串中删除。 If '�' in line: continue 无法识别。我将其粘贴here 并得到 1 个字符,3 个字节。没有帮助。在 python 中,我得到 �。我会进行逐行编辑,因此您基于 char 的解决方案无助于匆忙完成。我还能做什么?
【解决方案2】:

既然您标记了shellcommand-line,就可以了

$ tr -cd [:graph:][:space:] < foo.txt
_

it
go

【讨论】:

    【解决方案3】:

    一个正则表达式子怎么样?

    类似:

    import re
    
    clean_name = re.sub(r'[^a-zA-Z0-9\._-]', '', dirty_name)
    

    将任何其他允许的字符添加到正则表达式。

    【讨论】:

    • 解释:如果dirtyname中括号中的字符没有一个,则什么也不写,返回cleanname。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多