根据位置在文件中查找字符,然后删除文件中该字符的所有实例

根据位置在文件中查找字符,然后删除文件中该字符的所有实例

我在 Python 中有一个字符串字符的索引(该字符串只是文件的内容),我想运行一个 bash 命令来查找该字符是什么,并使用该命令删除文件中所有该字符的实例。我知道如何在 Python 中运行 bash 命令,我只是想了解 bash 命令应该是什么。

附言:

我想使用 bash 命令(我正在考虑 awk 或 sed,尽管我对它们没有太多经验,而且我在写这篇文章时正在学习更多)是因为我不想(或者真的不能)用 Python 打开文件。为什么?因为文件具有不同类型的编码,所以假设我以 utf-8 打开一个文件,并且有一些无法解释的字符。然后我要做的是,使用引发的异常,提取有问题的字符的位置,并计划使用它(也许还有 sed 或 awk)从相关文件中删除该字符。这是我目前拥有的代码:

spam_emails = []

for file in os.listdir('spam'):
    error = True
    while (error):
        try:
            with open(os.path.join('spam', file), 'r', encoding='utf-8') as f:
                spam_emails.append(f.read())
            error = False
        except UnicodeDecodeError as e:
            error_msg = str(e)
            offending_char_pos = (re.search('in position \d+', error_msg).group(0)).split(" ")[-1]
            # do something to delete offending character using bash command

使用 while 循环的原因是为了确保我覆盖给定文件中的所有违规字符,而不仅仅是第一个字符。此外,正则表达式用于从异常的错误消息中提取违规字符的位置,例如::'utf-8' codec can't decode byte 0xc4 in position 1029: invalid continuation byte

相关内容