C#/Python编码差异

2024-06-01 07:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我正在使用Python的一些文本库来分析文本的转换。Python的“剪切”实际上并没有将文本剪切成单独的文件,它只是有一个开始字符和结束字符的位置来提取字符串。例如:

the quick brown fox jumped over the lazy dog

我的python代码可能会通过指定4、9来删除“quick”。然后我将C用于一个GUI程序,并尝试使用Python指定的这些值,它可以工作。。。大多数情况下。似乎光学字符识别程序将pdf转换成文本文件,其中包含一些奇怪的UTF字符,这将改变C端的计数。在

PDF-txt转换奇数字符包括一个“fi”字符,而不是“f”和“i”字符(可能还有其他字符,它们是大文件)。现在这不会是一个问题,除非C说这是一个字符,Python(以及Notepad++)考虑这3个字符的位置。在

C#:“fi”长度=1个字符。在

Python/记事本++:“fi”长度=3个字符。在

最后,由于字符数的不同,给了我一个偏移片段。就像我说的,当我在python(linux)中运行它并尝试输出它完美的剪裁,然后我将文本文件传输到Windows和Notepad++中,确认它们的位置是正确的。C实际上只是将“fi”计算为一个字符,Notepad++和Python出于某种原因将其计为3个字符。在

我需要一种方法从Python端或C端桥接这种差异。在


Tags: 文件the字符串文本程序quick字符fi
1条回答
网友
1楼 · 发布于 2024-06-01 07:18:25

你必须区分字符和字节。utf8是一种字符编码,其中一个字符最多可以有4个字节。所以notepad++可能会显示字节位置,Python可以同时处理字节和字符串。在C中,可能已经将文件作为文本文件读取,这也会产生字符串。在

要在python中读取字符串,请使用:

import codecs
with codecs.open(filename, encoding="utf-8") as inp:
    text = inp.read()

相关问题 更多 >