0
votes

Comment concaténer des entiers et des cordes en python

J'essaie de rechercher une sous-chaîne avec le modèle Spécifier à l'aide de la bibliothèque RE. J'ai écrit une fonction pour le faire, mais finalement obtenir cette erreur: Tapez l'erreur: impossible de concaténer Str et des entiers. Ci-dessous ma fonction;

def searchValue(obs, concept):
try:
    found = re.search('## !!'concept+'=(.+?)!! ##',obs)
except AttributeError:
    found = 'null'
return found

obs= '!!1834=7850!! ## !!1915=Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.!! ## !!1915=Patient is HIV positive since 2016,no presents with pains on the plantar surface and pelvic pain.!! ## !!5096=2013-07-29!! ## !!5219=1068!! ## !!6504=7189!! ## !!6509=6511!! ## !!6575=1107!! ## !!6605=1065!! ## !!7191=MELANOMA OF THE RIGHT HEEL.!! ## !!8723=5622!!'
bett = searchValue(obs, 1915)

print(bett)


3 commentaires

'## !!' concept + '= (. +?) !! ## 'n'est pas une chaîne correcte.


Pour ce code, vous devriez obtenir SyntaxError (manquant + avant concept ).


Comme @Cristifati a signalé que vous obtenez cette erreur parce que vous devez faire '## !!' + concept + '= (. +?) !! ## '. Python essaie de concatement "str1" "str2" <- Syntaxe Python valide. Mais dans votre cas "str2" est un int qui est pourquoi il est erroné.


7 Réponses :


0
votes

Vous essayez de concaténer une chaîne avec de type entier C'est pourquoi vous obtenez l'erreur. Essayez d'utiliser cela et partagez si cela résout votre problème:

bett = searchValue(obs, str(1915))


0 commentaires

0
votes

Vous avez manqué A +. Vous devez également faire l'entier que vous essayez de concaténer (concept) une chaîne, car vous ne pouvez pas concaténer les entiers avec des chaînes. Vous devez également faire le 1915 que vous recherchez dans la variable «OBS» une chaîne, car «OBS» est une chaîne et non un entier.

def searchValue(obs, concept):
try:
    found = re.search('## !!' + str(concept) + '=(.+?)!! ##',obs)
except AttributeError:
    found = 'null'
return found

obs= '!!1834=7850!! ## !!1915=Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.!! ## !!1915=Patient is HIV positive since 2016,no presents with pains on the plantar surface and pelvic pain.!! ## !!5096=2013-07-29!! ## !!5219=1068!! ## !!6504=7189!! ## !!6509=6511!! ## !!6575=1107!! ## !!6605=1065!! ## !!7191=MELANOMA OF THE RIGHT HEEL.!! ## !!8723=5622!!'
bett = searchValue(obs, str(1915))

print(bett)


0 commentaires

0
votes

Je pense que vous voulez dire: xxx

La version correcte est la suivante: xxx

vous devez jeter de Int à la chaîne explicitement. < / p>


0 commentaires

0
votes

Votre code est correct mais vous manquez A + pour CONCAT

def searchValue(obs, concept):
try:
    found = re.search('## !!'+str(concept)+'=(.+?)!! ##',obs)
except AttributeError:
    found = 'null'
return found

obs= '!!1834=7850!! ## !!1915=Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.!! ## !!1915=Patient is HIV positive since 2016,no presents with pains on the plantar surface and pelvic pain.!! ## !!5096=2013-07-29!! ## !!5219=1068!! ## !!6504=7189!! ## !!6509=6511!! ## !!6575=1107!! ## !!6605=1065!! ## !!7191=MELANOMA OF THE RIGHT HEEL.!! ## !!8723=5622!!'
bett = searchValue(obs, 1915)

print(bett)


0 commentaires

1
votes

Si vous n'êtes pas intéressé par une position de substrings, j'utiliserais:

def searchValue(obs, concept):
    return re.findall('## !!'+ str(concept) + '=(.+?)!! ##',obs)

bett = searchValue(obs, 1915)
print(bett)

>>> ['Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.']



0 commentaires

1
votes

Il y a 2 erreurs dans votre code:

  1. manquant un + em> strong> dans '##! "Concept code> (pourrait être une faute de frappe?) - Céder de code syntaxiquement incorrect ( SyntaxError em>) li>
  2. Ajout de chaînes ( `'## !!' em>) avec int em> s ( 1915 em>) - ce qui n'est pas possible ( TypeError em>). Vous devez convertir le int em> vers str em> li> ol>

    Voici comment votre motif ( re.search code> S 1 st sup> argument) devrait ressembler (le plus rapide, bien sûr, il y a de la place pour des améliorations): P>

    >>> concept = 1915
    >>> obs = '!!1834=7850!! ## !!1915=Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.!! ## !!1915=Patient is HIV positive since 2016,no presents with pains on the plantar surface and pelvic pain.!! ## !!5096=2013-07-29!! ## !!5219=1068!! ## !!6504=7189!! ## !!6509=6511!! ## !!6575=1107!! ## !!6605=1065!! ## !!7191=MELANOMA OF THE RIGHT HEEL.!! ## !!8723=5622!!'
    >>>
    >>> found = re.search('## !!' + str(concept) + '=(.+?)!! ##', obs)  # !!! Copy / paste this in your code
    >>>
    >>> found
    <re.Match object; span=(14, 110), match='## !!1915=Patient is awaiting imaging results, th>
    >>> found.group()
    '## !!1915=Patient is awaiting imaging results, then start darcabazine 250 ml every 21 days.!! ##'
    


0 commentaires

1
votes

Après quelques mundies sur votre code, j'ai quelque chose qui semble bien; Sinon, laissez-moi savoir.

La partie importante est d'alimenter la recherche () avec une chaîne complète; c'est fait en utilisant .format ().

salutations xxx


0 commentaires