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.
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))
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"))
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
"
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'
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'
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])
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.