如何通过计算python中未知len()的数量来执行split()

如何通过计算python中未知len()的数量来执行split(),python,string,split,Python,String,Split,我有python脚本来在线或离线检查用户,但我有问题 useron=u', '.join(useron) useroff=u', '.join(useroff) if useron: repon+=u'ONLINE\nUser: '+useron+u'.' if useroff: repoff+=u'OFFLINE\nUser: '+useroff+u'.' reply(type, source, repon) reply(type, source,

我有python脚本来在线或离线检查用户,但我有问题

useron=u', '.join(useron)  
useroff=u', '.join(useroff)  
if useron:  
    repon+=u'ONLINE\nUser: '+useron+u'.'  
if useroff:  
    repoff+=u'OFFLINE\nUser: '+useroff+u'.'  
reply(type, source, repon)  
reply(type, source, repoff)  
问题是我无法确定有多少用户处于打开和关闭状态,而每次发送消息的最大限制仅为150个字符的字母,我尝试使用split()来计算消息中len()的数量,但始终失败


我想尝试如果第一条消息的字母数超过150个字符,那么剩余的消息将在第二条消息、第三条消息和下一条消息中继续

如果要根据长度拆分字符串,则应使用
下标
(索引),而不是
str.split()

范例-

useron=u', '.join(useron)  
useroff=u', '.join(useroff)  
if useron:  
    repon+=u'ONLINE\nUser: '+useron+u'.'  
if useroff:  
    repoff+=u'OFFLINE\nUser: '+useroff+u'.' 
for i in range(0,len(repon),150):
    reply(type, source, repon[i:i+150])
for i in range(0,len(repoff),150):
    reply(type, source, repoff[i:i+150])

示例/演示(为了简单起见,以
5
块打印)-


如果我正确理解您的问题-您只能在每个命令中最多发送150个字符;您需要确保正确分割命令,以便不违反字符限制,并且命令有意义

要做到这一点,您需要在如何组织命令方面有点聪明。将命令和长度一起存储在列表中,然后对列表进行排序,然后将其拆分为长度接近150的块

试试这个:

login = []
logout = []

for user in online_userlist:
    cmd = u'ONLINE\nUser: {}'.format(user)
    login.append((len(cmd), cmd))

for user in offline_userlist:
    cmd = u'OFFLINE\nUser: {}'.format(user)
    logout.append((len(cmd), cmd))
现在,您希望以150个字符的偶数块发送命令,这里有一种方法(提示:您能看到是否可以优化它吗?)

command=''
对于长度,在注销时使用cmd:
如果len(命令)+长度<150:
command+=cmd
其他:
答复(类型、来源、报告)
命令=“”

你的问题有点不清楚,你能解释一下你到底想拆分和计数什么吗
len()
例如,你的程序的输入/输出示例会很有帮助。如果超过150个字符,我会尝试拆分repon和repoff。你能提供一个输入和输出示例吗。。?还有所需的输出?我用useron和useroff调用的所有输入,以及用repon和repoff调用的所有输出,我的完整脚本太长了,但是输出只使用replyi调用useron和useroff并使用.join()兄弟,多亏了响应,我会尝试,你的建议看起来可能会成功。
login = []
logout = []

for user in online_userlist:
    cmd = u'ONLINE\nUser: {}'.format(user)
    login.append((len(cmd), cmd))

for user in offline_userlist:
    cmd = u'OFFLINE\nUser: {}'.format(user)
    logout.append((len(cmd), cmd))
command = ''
for length, cmd in logout:
   if len(command) + length < 150:
     command += cmd
   else:
     reply(type, source, repon)
     command = ''