7
votes

Diviser une chaîne de longueur variable en plusieurs parties de Python

J'ai une base de données:

p>

Comme vous pouvez le voir dans le Colonne 'Desc', le texte est de longueur variable (ce qui signifie que deux chaînes que je tire de cette base de données ne sera de la même longueur). Je vais éventuellement ajouter de nombreuses entrées à cette base de données, mais c'est ce que je vais tester avec et commençant par le moment. P>

En ce moment, j'ai le code Python suivant pour saisir ces blocs de chaîne et Affichez-les: P>

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:])


1 commentaires

Utilisez la substitution des paramètres au lieu de construire manuellement SQL String E.g., cursor.execute ('Sélectionnez * à partir de commandes où cmd =?', (cmd,)) . Vous n'avez pas besoin d'appeler cursor.fetchall () Vous pouvez itérer directement il: pour la ligne dans le curseur: ...


3 Réponses :


2
votes

Split sur des espaces pour séparer les mots, puis rejoindre 8 à la fois avec un espace comme séparateur.

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


1 commentaires

Merci! C'était ce que je cherchais pour l'instant.



1
votes

Coupez par des mots au lieu de caractères utilisant 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
>>> 


0 commentaires

16
votes

Consultez le Module TextWrap . xxx

Vous pouvez faire beaucoup de configuration de TextWrapper.


3 commentaires

Cela existe ?! Les bibliothèques standard de Python n'arrêtent jamais de me surprendre. +1


Je travaillais sur un sale tour pour faire le travail. Je n'avais aucune idée de quelque chose comme ceci était disponible. Je vais certainement jeter un oeil une fois que j'ai la chance. Merci!


C'est rapide et ça fait le travail. C'est tout ce que je cherchais :)