Tengo una base de datos:Separar una cadena de longitud variable en varias partes de pitón
Como se puede ver en la columna 'desc', el texto es de longitud variable (es decir, no hay dos cadenas I extracción de esta base de datos van a ser de la misma longitud). Eventualmente añadiré muchas más entradas a esta base de datos, pero esto es con lo que estoy probando y comenzando por el momento.
En este momento, tengo el siguiente código Python para agarrar estos bloques de cuerda y mostrarlos:
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:])
El desdoblamiento aquí funciona hasta cierto punto, por ejemplo:
Comando: cerrar :
Descripción: Este comando creará un 'close' butto
n en la ventana de mensajes para invocar el carácter
acter. Si actualmente no hay una ventana en la pantalla, t
La ejecución del script finalizará.
Como puede ver en el ejemplo anterior de la salida, la división hace que algunos caracteres se corten en la mitad de la palabra. Dado el hecho de que las cadenas podrían ser de cualquier longitud entre digamos ... 20 caracteres en total y hasta 190ish, y quiero dividir la cadena en pedazos de, digamos ... 8 palabras cada uno debido a limitaciones de espacio, ¿cómo podría ir? sobre hacer esto?
utilice la sustitución de parámetros en lugar de construir manualmente cadena sql, por ejemplo, 'cursor.execute ('select * from commands where cmd =?', (Cmd,))'. No necesita llamar 'cursor.fetchall()' podría iterar sobre él directamente: 'para la fila en el cursor: ...' – jfs