Python 3:修剪多字节字符串

时间:2018-07-26 21:30:21

标签: string python-3.x trim multibyte

我需要修剪多字节字符串,以使其余字符仍能以其原始编码读取(没有尾随字节标记)。

示例-以下字符串的长度为105个字符。但是,它的长度为194个字节。将此字符串导入字符限制为150个的redshift数据库列中时,出现溢出错误。

>>str="Негосударственное образовательное учреждение высшего профессионального образования Институт Уник-70264832"
>>> len(str)
105
>>> len(bytes(str, 'utf-8'))
194

如何安全地按整个多字节字符修剪字符串,以使最终得到的最长的完整字符串少于150个字节?

我知道以下内容适用于Python 2,但我需要适用于Python 3的解决方案。

def slice_multibyte(string, length):
    #Loop while string is still longer than required length
    while len(str(string.decode('utf-8'))) > length:
        #Trim off one full utf-8 character (may be multibyte)
        string = string.decode("utf-8")[:len(string.decode("utf-8"))-1].encode("utf-8")
    return string

1 个答案:

答案 0 :(得分:0)

进一步思考之后,我提出了以下解决方案:

driver.find_element_by_xpath(".//a[@class='css-1qdedno' and @href='/stats/dashboard']")

我的方法是,只要字符串的字节版本长度大于指定的限制,就可以从字符串末尾删除一个字符。