在python中将可变长度字符串拆分为多个部分

时间:2012-01-15 23:11:12

标签: python string string-formatting

我有一个数据库:

正如你在'desc'列中看到的那样,文本的长度是可变的(意味着我从这个数据库中拉出的两个字符串的长度不会相同)。我最终会在这个数据库中添加更多的条目,但这正是我正在测试的,并且从现在开始。

现在,我有以下python代码来获取这些字符串块并显示它们:

cmd = input(Enter command:)
sql = "SELECT cmd,`desc` FROM table WHERE cmd = '"+ cmd +"'"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
    print("Command: "+ row[0] +":\n")
    print("Description: "+ row[1][:40] +"\n")
    if (len(row[1]) > 40):
       print(row[1][40:85])
    if (len(row[1]) > 85):
       print(row[1][85:130])
    if (len(row[1]) > 130):
       print(row[1][130:165])
    if (len(row[1]) > 165):
       print(row[1][165:])

这里的分裂在某种程度上起作用,例如:

  

命令:关闭:
  说明:此命令将创建“关闭”按钮   n在调用char的消息窗口中   ACTER。如果屏幕上当前没有窗口,则t   脚本执行将结束。

正如您在上面的输出示例中所看到的,分割会导致某些字符在中间字中被截断。鉴于这些字符串可以是总共20个字符和高达190字之间的任何长度,并且我想将字符串分成几个字块...因为空间限制每个字8个字,我怎么去关于这样做?

3 个答案:

答案 0 :(得分:16)

查看textwrap module

>>> import textwrap
>>> 
>>> s = "This command will create a 'close' button in the message window for the invoking character. If no window is currently on screen, the script execution will end."
>>> 
>>> wrapped = textwrap.wrap(s, 40)
>>> 
>>> for line in wrapped:
...     print line
... 
This command will create a 'close'
button in the message window for the
invoking character. If no window is
currently on screen, the script
execution will end.

你可以做很多TextWrapper的配置。

答案 1 :(得分:2)

在空格上拆分以分隔单词,然后一次加入8,空格作为分隔符。

content = "This is some sentence that has more than eight words"
content = content.split(" ")
print content
['This', 'is', 'some', 'sentence', 'that', 'has', 'more', 'than', 'eight', 'words']
print(" ".join(content[0:8]))
This is some sentence that has more than

答案 2 :(得分:1)

使用python textwrap module:

按字而不是字符剪切
>>> import textwrap
>>> text = 'asdd sdfdf asdsg asfgfhj'
>>> s = textwrap.wrap(text, width=10)  # <- example 10 characters
>>> s
['asdd sdfdf', 'asdsg', 'asfgfhj']
>>> print '\n'.join(s)
asdd sdfdf
asdsg
asfgfhj
>>>