我一直在尝试如何在Discord中拆分字段,其中每个字段的字符限制为1024个字符
我的问题是,每当字符在900-2000个字符之间时,我只能将其分为两个列表,但是我确实得到了超过2000个字符的字符(我将在代码中显示的listInfo)
我想弄清楚的是,如何将场分解成x次,其中0-900是一个场,900-1800是第二个场,1800-2700是第三个场等等(每个场是n+900)
data = []
listInfo = [
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167764|EU 40 - [2]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167765|EU 40.5 - [4]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167766|EU 41 - [4]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167767|EU 42 - [4]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167768|EU 42.5 - [8]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167769|EU 43 - [9]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167770|EU 44 - [14]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167771|EU 44.5 - [8]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167772|EU 45 - [16]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167773|EU 45.5 - [8]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167774|EU 46 - [16]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167775|EU 47 - [5]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167776|EU 47.5 - [4]>',
'<https://www.justrandomlink.com/?controller=cart&add=1&as=true&qty=1&id_product=20798&token=e4d64f25476dcee4b08744d382dc405b&ipa=167777|EU 48.5 - [4]>'
]
if 900 <= sum(len(i) for i in listInfo) < 2000:
data.append(
{
'title': 'Info',
'value': '\n'.join(listInfo[:len(listInfo)//2]) if len(listInfo) else '*Info not found*',
'short': True
}
)
data.append(
{
'title': '-',
'value': '\n'.join(listInfo[len(listInfo)//2:]) if len(listInfo) else '*Info not found*',
'short': True
}
)
elif 0 < sum(len(i) for i in listInfo) < 900:
data.append(
{
'title': 'Info',
'value': '\n'.join(listInfo) if len(listInfo) else '*Info not found*',
'short': False
}
)
我试图找出一个更聪明的方法,我不添加另一个功能,是3分裂,然后为4等
处理此问题的一种方法是保持当前批大小的运行总数,并使用该总数确定是添加到当前批还是生成新批
如果您可以通过几个步骤来完成这项工作,而不是使用
enumerate
来跟踪列表中的位置并在枚举中使用.join
,那么只需批处理任何新行并担心以后加入它们是可行的这样做的一个问题是占用了大量内存空间。您可以使用名为生成器的工具来继续提供每个批,而不是附加到列表中。如果调用generator的人出于某种原因确实需要一个列表,他们可以从generator中创建一个列表,否则他们只能处理流中的项
在某种程度上,仍然存在这样一个问题:您是否希望消息的长度正好为900个字符(可能会拆分传入的消息),或者是否希望消息保持完整。保持消息完整并且只在消息之间进行拆分的一个问题是,列表中的一个项本身可以超过900个字符。我编写的所有代码都隐式地假定情况并非如此,因为在这种情况下,您希望消息的包装、不发送或其他行为的确切方式实际上取决于应用程序
相关问题 更多 >
编程相关推荐