我需要修剪多字节字符串,以使其余字符仍能以其原始编码读取(没有尾随字节标记)。
示例-以下字符串的长度为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
答案 0 :(得分:0)
进一步思考之后,我提出了以下解决方案:
driver.find_element_by_xpath(".//a[@class='css-1qdedno' and @href='/stats/dashboard']")
我的方法是,只要字符串的字节版本长度大于指定的限制,就可以从字符串末尾删除一个字符。