相关疑难解决方法(0)

在Python中将字符串截断为特定字节数

如何将字符串截断为不超过 50 个字节?

\n\n
a = 'asdfzx\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94awelkjawletjawetr\xeb\xb0\xa9\xea\xb0\x91\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4.dlgawklejtwgasdgsdfgd\nsdfasdfsdafa\xea\xb6\x81\xea\xb8\x88\xed\x95\xb4\xec\x9a\x94rewgargasregawergedrhsedhesrdhrthdrfjydjdrktydjdyj'\nmax = 50byte\na = max(a)\n
Run Code Online (Sandbox Code Playgroud)\n

python string

9
推荐指数
1
解决办法
7205
查看次数

Python截断国际字符串

我一直试图调试这个太久了,我显然不知道我在做什么,所以希望有人可以提供帮助.我甚至不确定我应该问什么,但在这里:

我正在尝试发送Apple推送通知,并且它们的有效负载大小限制为256字节.所以减去一些开销的东西,我留下了大约100个主要消息内容的英文字符.

因此,如果消息长于最大值,我会截断它:

MAX_PUSH_LENGTH = 100
body = (body[:MAX_PUSH_LENGTH]) if len(body) > MAX_PUSH_LENGTH else body
Run Code Online (Sandbox Code Playgroud)

所以这很好,花花公子,无论我有多长时间的消息(英文),推送通知发送成功.但是,现在我有一个阿拉伯字符串:

str = "??? ????? 
??? ????? ??? ??? ??? ??? ????? 
??? ????? ??? ??? ??? 
???? ?"

>>> print len(str)
109
Run Code Online (Sandbox Code Playgroud)

所以这应该截断.但是,我总是得到无效的有效负载大小错误!好奇,我一直在降低MAX_PUSH_LENGTH阈值以查看它成功需要什么,并且直到我将限制设置为大约60才推动通知成功.

我不确定这是否与英语以外的语言字节大小有关.我的理解是英文字符占用一个字节,阿拉伯字符占用2个字节也是如此?这可能与它有关吗?

此外,字符串在发送之前是JSON编码的,因此最终看起来像这样:\u0647\u064a\u0643 \u0628\u0646\u0643\u0648\u0646 \n\u0639\u064a\u0634 ...它是否被解释为原始字符串,而u0647只是5个字节?

我该怎么办?有没有明显的错误,或者我没有问正确的问题?

python string encoding apple-push-notifications

6
推荐指数
2
解决办法
2201
查看次数