gpt4 book ai didi

python - 将 ISO-8859-1 字符粘贴到 Python IDLE 中 - IDLE 会更改它们

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:05 25 4
gpt4 key购买 nike

我正在尝试替换/删除文本文档中的一些行。该文档采用 ISO-8859-1 字符编码。

当我尝试将此行复制到我的 Python 脚本中进行替换时,它不会匹配。如果我缩短该行并删除直到第一个双引号 "它将很好地替换它。

desc = [x.replace('Random text “^char”:', '') for x in desc]

这将不匹配。如果我输入:

desc = [x.replace('Random text :', '') for x in desc]

很匹配。我已经检查过它也不是 ^ 符号。显然,Python IDLE 没有使用与我的文本文件相同的字符集,并且当我将其粘贴到脚本中时正在更改符号。那么,如果我的脚本不处理相同的字符,如何让我的脚本查找这一行?

最佳答案

不幸的是,虽然有一些软件包可以通过分析文档的内容做出很好的猜测,但没有可靠的方法来确定纯文本文档的编码。用于编码检测的一种流行的第 3 方模块是 chardet 。或者您可以手动对一些流行的编码进行尝试和错误,看看什么有效。

一旦确定了正确的编码,在Python 3中替换操作本身就很简单。核心思想是将编码传递给open函数,这样就可以编写Unicode字符串对象到文件中,或者从文件中读取 Unicode 字符串对象。这是一个简短的演示。如果您的终端编码设置为 UTF-8,这将正常工作。我已经在 Python 3.6.0 上的 Bash shell 和idle3.6 中测试了它。

fname = 'test.txt'
encoding = 'cp1252'

data = 'This is some Random text “^char”: for testing\n'
print(data)

# Save the text to file
with open(fname, 'w', encoding=encoding) as f:
f.write(data)

# Read it back in
with open(fname, 'r', encoding=encoding) as f:
text = f.read()

print(text, text == data)

# Perform the replacement
target = 'Random text “^char”:'

out = text.replace(target, 'XXX')
print(out)

输出

This is some Random text “^char”: for testing

This is some Random text “^char”: for testing
True
This is some XXX for testing

关于python - 将 ISO-8859-1 字符粘贴到 Python IDLE 中 - IDLE 会更改它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com