通过 python 中的内存大小获取字符数

Getting number of characters through it's memory size in python

[Python]

我有一个字符串,我知道它在内存中的大小。我想得到它包含的字符数(粗略估计)。

实际情况,我想通过邮件发送报告,邮件的内容超出了允许的大小。我想根据最大大小将邮件分成多个。但是我没有办法将最大大小与字符串中的字符数相关联。

import smtplib

smtp = smtplib.SMTP('server.name')
smtp.ehlo()
max_size = smtp.esmtp_features['size']

message_data = <some string data exceeding the max_size>
# Now, how can I get the number of characters in message_data which exceeds the max_szie

谢谢,

字符串中的字符数是内存中的字节数,您必须减去 37 (python 2.7 / mac os)

import sys

def estimate_chars():
    "size in bytes"
    s = ""
    for idx in range(100):
        print idx * 10, sys.getsizeof(s), len(s)
        s += '1234567890'

estimate_chars()

结果:(字符 | 字节 | len)

0 37 0
10 47 10
20 57 20
30 67 30
40 77 40
50 87 50
...
960 997 960
970 1007 970
980 1017 980
990 1027 990