web-dev-qa-db-fra.com

Extraire uniquement les caractères d'une chaîne dans Python

En Python, je veux extraire uniquement les caractères d'une chaîne.

Considérez que j'ai la chaîne suivante,

input = "{('players',): 24, ('year',): 28, ('money',): 19, ('iPod',): 36, ('case',): 23, ('mini',): 46}"

Je veux le résultat,

output =  "players year money iPod case mini"

J'ai essayé de diviser en ne considérant que les alphabets,

Word1 = st.split("[a-zA-Z]+")

Mais la scission ne se produit pas.

24
SyncMaster

Vous pouvez le faire avec re, mais la méthode de partage de chaîne ne prend pas d'expression régulière, elle prend une chaîne.

Voici une façon de le faire avec re:

import re
Word1 = " ".join(re.findall("[a-zA-Z]+", st))
37
chown

string.split () ne prend pas d'expressions régulières. Vous voulez quelque chose comme:

re.split("[^a-zA-Z]*", "your string")

et pour obtenir une chaîne:

" ".join(re.split("[^a-zA-Z]*", "your string"))
6
MK.

Je pense que vous voulez tous les mots, pas les caractères.

result = re.findall(r"(?i)\b[a-z]+\b", subject)

Explication:

"
\b       # Assert position at a Word boundary
[a-z]    # Match a single character in the range between “a” and “z”
   +        # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
\b       # Assert position at a Word boundary
"
5
FailedDev

Et si on faisait ça?

>>> import ast
>>> " ".join([k[0] for k in ast.literal_eval("{('players',): 24, ('year',): 28, ('money',): 19, ('iPod',): 36, ('case',): 23, ('mini',): 46}").keys()])
'case mini year money iPod players'
2
sberry

Ou si vous voulez tous les caractères sans tenir compte des mots ou des espaces vides

    a = "Some57 996S/tr::--!!ing"
    q = ""
    for i in a:
        if i.isalpha():
            q = "".join([q,i])

imprimer q 'SomeString'

1
odin

Vous pouvez adopter l'itération de la chaîne et utiliser la fonction isalpha pour déterminer s'il s'agit d'un caractère alpha ou non. Si c'est le cas, vous pouvez l'ajouter à la chaîne de sortie.

a = "Some57 996S/tr::--!!ing"
q = ""
for i in a:
    if i.isalpha():
        q = "".join([q,i])
0
keshav wurfel
import re
string = ''.join([i for i in re.findall('[\w +/.]', string) if i.isalpha()])

#'[\w +/.]' -> it will give characters numbers and punctuation, then 'if i.isalpha()' this condition will only get alphabets out of it and then join list to get expected result.
# It will remove spaces also.
0