2014-06-11 4 views
0

je tente d'écrire du texte supplémentaire à la première ligne de cette chaîne multi-ligne à l'aide replace, et il ne fonctionne pas:nouvelle ligne vierge

somestr = """For example 
(""" 

print somestr.replace('\\n(', ' you can find') 

J'attends le résultat suivant:

For example you can find 
(

Modifier

Cette chaîne vient d'un objet de la ligne:

cursor.execute("SELECT col1 FROM tbl") 
row = cursor.fetchone() 
somestr = str(row.col1) 

La sortie de pprint.pprint(locals()) donne:

{'somestr': '\n\nFor example\n(\n'} 
+0

Prenez garde avec str = str (row.col1) 'Ce ne faire quelque chose pour la première fois! – dawg

Répondre

3

Ne pas échapper au caractère de nouvelle ligne et ça va très bien fonctionner; ne comprennent le texte original si vous souhaitez insérer plutôt que de remplacer:

somestr.replace('\n(', ' you can find\n(') 

La chaîne d'origine ne pas contiennent la séquence de caractères \, n, (, mais votre code tente de remplacer tout cela. Au lieu de cela, il y a un caractère de nouvelle ligne suivi de ( dans cette chaîne, et pour créer le caractère de nouvelle ligne, vous devez utiliser \n, et non \\n.

Démo:

>>> somestr = """For example 
... (""" 
>>> print somestr.replace('\n(', ' you can find\n(') 
For example you can find 
(
+0

Pour une raison quelconque, cela ne fonctionne pas lorsque la chaîne provient d'un objet ligne. Pouvez-vous voir mon édition? – user3242205

+0

@ user3242205: étant donné la sortie exacte que vous avez imprimée, le 'replace' fonctionne très bien. Attention, n'utilisez pas 'str' comme nom local, vous masquer le built-in maintenant. –

+0

Mauvais choix de nom pour l'exemple. Je ne peux toujours pas le faire fonctionner – user3242205