我有一个数据库:
正如你在'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个字,我怎么去关于这样做?
答案 0 :(得分:16)
>>> 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
>>>