Извлечение только символов из строки в Python - PullRequest
24 голосов
/ 20 ноября 2011

В Python я хочу извлечь только символы из строки.

Предположим, у меня есть следующая строка,

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

Я хочу получить результат как

output =  "players year money ipod case mini"

Я пытался разделить, учитывая только алфавиты,

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

Но разделение не происходит.

Ответы [ 7 ]

37 голосов
/ 20 ноября 2011

Вы можете сделать это с помощью re, но метод разбиения строк не принимает регулярное выражение, а принимает строку.

Вот один из способов сделать это с помощью re:

import re
word1 = " ".join(re.findall("[a-zA-Z]+", st))
6 голосов
/ 20 ноября 2011

string.split () не принимает регулярные выражения.Вы хотите что-то вроде:

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

и получить строку:

" ".join(re.split("[^a-zA-Z]*", "your string"))
5 голосов
/ 20 ноября 2011

Я думаю, что вы хотите все слова, а не символы.

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

Объяснение:

"
\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
"
2 голосов
/ 20 ноября 2011

Как насчет этого?

>>> 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'
1 голос
/ 15 апреля 2015

Или, если вы хотите, чтобы все символы независимо от слов или пробелов

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

печать q 'SomeString'

0 голосов
/ 12 июля 2019

Вы можете использовать итерацию по строке и использовать функцию isalpha, чтобы определить, является ли это символом альфа или нет.Если это так, вы можете добавить его к выходной строке.

a = "Some57 996S/tr::--!!ing"
q = ""
for i in a:
    if i.isalpha():
        q = "".join([q,i])
0 голосов
/ 16 мая 2019
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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...