gpt4 book ai didi

python - Python中按字节长度分割字符串

转载 作者:行者123 更新时间:2023-12-01 08:44:02 30 4
gpt4 key购买 nike

我遇到过这样的情况:我需要向 Oracle VARCHAR 中插入超过 4000 个字符,并且建议不要使用 CLOB。建议的解决方案是将其分成 2 列,每列 4000,8000 就足够了。我使代码动态化,以便可以处理 X 个列以供重用。它工作得很好,通过了测试等等,直到它被部署并且有人从 Microsoft 产品复制并粘贴时它就崩溃了,因为函数中生成了超过 4000 个字节。我没有考虑过 unicode。

我尝试了几种想法来解决这个问题,然后决定从 4000 个字符开始,如果字节长度超过 4000,则删除一个字符并再次检查字节长度。它有效,但我想知道是否有更好的解决方案。该函数还将列名称从“column”更改为“column1”、“column2”等。

 text = data[key]
index = 1
while text:
length = 4000
while len(text[0:length].encode('utf-8')) > 4000:
length -= 1
data['{}{}'.format(key, index)] = text[0:length]
text = text[length:]
index += 1
del data[key]

最佳答案

检查您针对 CLOB 的建议是否是最新的,或者是否基于有关使用定位器访问 LOB 的旧信息。

cx_Oracle 中“小型”CLOB 的最佳实践是将它们表示为字符串:您的代码将变得简单且仍然高效。请参阅示例 https://github.com/oracle/python-cx_Oracle/blob/master/samples/ReturnLobsAsStrings.py

另一个解决方案是使用支持 32K VARCHAR2 的最新版本的 Oracle DB。

关于python - Python中按字节长度分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379954/

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