excuses de poster la question, comme cela a été répondu dans d'autres questions. Cependant, ne pouvait pas comprendre ce qui ne va pas avec cette solution. La question nécessite de trouver les caractères inférieurs bordés de 3 caractères de chaque côté. Le code que j'ai écrit: la chaîne que je reçois est p> 'lgvcaaginbkvsoezhtlnldlyclyitloqfgiksudtm'
vs 'LinkedList' P>
BlockQuote> Merci pour l'aide. P> Edit: Pour une raison quelconque, le code suivant semble fonctionner: p>
3 Réponses :
Ce serait une solution de tranchage:
# the ( .. ) are needed to enable line breaking - you could use \ as well
if notupper(part[0]) and notupper(part[8]) and notupper(part[4]) and (
part[1].isupper() and part[2].isupper() and part[3].isupper() and
part[5].isupper() and part[6].isupper() and part[7].isupper()):
print("Statisfies all terms: ", part)
J'essaie d'envelopper ma tête autour de la solution, cela n'a pas fonctionné pour la chaîne donnée.
Pour ne renvoyer que la lettre minuscule utilise partie [4] code>
@PYT et celui-ci fonctionne .. si vous remplacez impression ("STATEFIES Toutes les termes:", partie) code> par Imprimer ("STATEFIES Toutes les termes:", partie [4]) code > et utiliser comme t code>: t = "" "" "" ".replace (" \ n ", "") code> vous obtenez linkedlist code> en résultat ...
Ce que vous essayez de faire est de correspondre à un motif: non supérieur, supérieur, supérieur, supérieur, non supérieur supérieur, supérieur, supérieur, supérieur, non supérieur. Ceci est plus facile à attraper si vous utilisez une signature pour votre chaîne:
>>> result = ""
>>> i = sig.find("lUUUlUUUl")
>>> while i != -1: # find != -1 means that the substring wasn't found
... result += t[i+4] # the center `l`
... i = sig.find("lUUUlUUUl", i+4) # we can start the next search at the center `l`
...
>>> print( result )
t
Le texte a le nouveau caractère de ligne "\ n" à la fin de chaque ligne. Vous devez remplacer tous les caractères "\ n" avec une chaîne vide. Cela peut être fait en utilisant le module REGEX (Expression régulière). Ajoutez ces lignes de code et cela fonctionnera:
import re x = re.sub(r"\n","", x)
Votre chaîne de test ne contient pas de dessus ... une sorte de mauvais cas de test - n'est-ce pas?
Avoir les cas supérieurs à la fin, que ce que vous vouliez dire? Aussi supprimé le «vrai»
Vous n'avez que des caractères minuscules:
'lgvcaaginbkvsoezhtlnldlystlkvsoezhtlnldslycyryslooqfgiksudtm' vs 'linkedlist' code> - pas un seul"caractère majuscule" code>La solution de regex pourrait être plus appropriée?
@Austine:
'thiswould qualifier' code> - bien qu'il ne soit pas correct orthographiéPas sûr des étiquettes ici, mais si vous vérifiez le code source de PythonChallenge.com/pc /def/equality.html , il a une ficelle massive à la fin à partir de laquelle cela doit être creusé.
@chamoda J'essaie de le faire fonctionner sans re.
Une mise en garde ici est
.isapper () code> peut retournervrai code> pour les espaces seulement.La chaîne donnée n'a pas de place, seulement des caractères inférieurs et supérieurs
@PyThonnewbie SO SE INPUT
'THIWEDILDILDITY' CODE> doit donner une sortiew code>. et qu'en est-il de'thiswouldalso qualifier' code> et'thewouldalso qualifier' code>?@ Partho63 Aucun de ceux-ci ne serait admissible, excuses si la question n'était pas claire. "Thiswou" retournerait "s" et "Abcdefgh" ne retournerait rien
@pytthonnewbie, alors un seul caractère inférieur et inférieur entouré de caractères supérieurs numérotés numérotés de la fois dans les deux côtés serait la sortie. et qu'en est-il de plusieurs occurrences
ce typewouldqualify code>. Désolé de demander tellement de questions.@ Partho63 une minuscule entourée d'exactement 3 caractères majuscules de la face, si ses 4 majuscules ne doivent pas considérer ce caractère particulier