如何有效地分割utf8编码的fi

2024-06-25 05:43:59 发布

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

切片utf-8编码文件时遇到问题。使用编解码器打开后,由于开头的字节顺序标记(BOM)字符会导致移位,因此对部分进行切片会变得困难。在

请参阅下面我尝试的详细信息。在

def readfiles(filepaf):
    with codecs.open(filepaf,'r', 'utf-8') as f:
        g=f.read()
        q=' '.join(g.split())
        return q

q=readfiles(c:xxx)

q=Katharine opened her lips and drew in her breath, as if to reply with equal vigor, when the shutting of a door...

>>> q[0:100]
u'\ufeffKatharine opened her lips and drew in her breath, as if to reply with equal vigor, when the shuttin'


>>> q[0:100].encode('utf-8')
'\xef\xbb\xbfKatharine opened her lips and drew in her breath, as if to reply with equal vigor, when the shuttin'

唯一准确的结果是直接打印切片部分,但我的程序使用切片部分而不是打印,而且大多数情况下切片部分由于开头的偏移而不准确。在

理想输出

凯瑟琳张开嘴唇,屏住呼吸,仿佛要用同样的精力回答,这时,舒丁

关于如何在不在开头添加BOM字符的情况下进行切片有什么建议?在


Tags: andtoinifaswith切片equal
1条回答
网友
1楼 · 发布于 2024-06-25 05:43:59

丢弃从片的开头以第10位开始的字节,直到找到一个不是位10的字节。这个字节将开始一个新的字符。你最多只能跳过3个字节。在

或者,你不能给字符串一个断片。在

请注意\ufeff是一个有效字符:它是零宽度的非中断空格,一些断开的文本编辑器会插入UTF8文件的开头以标识它们。如果要跳过它,请使用utf-8-sig编码。在

相关问题 更多 >