2013-09-15 4 views
5

Я новичок в python, поэтому я мог бы пропустить что-то простое.python найти подстроки на основе разделителя

Я дал пример

string = "The , world , is , a , happy , place " 

Я должен создать подстроки, разделенные, и распечатывать их и экземпляры процессов отдельно. то есть в этом примере я должен быть в состоянии напечатать

The 
world 
is 
a 
happy 
place 

Какой подход может я взять. Я пытался использовать функцию поиска строк, но

Str[0: Str.find(",") ] 

не помогает найти 2-й, 3-й экземпляры.

ответ

10

Пробуйте использовать функцию split.

В вашем примере:

string = "The , world , is , a , happy , place " 
array = string.split(",") 
for word in array: 
    print word 

Ваш подход потерпел неудачу, потому что вы индексируетесь его не дают строку от начала до первого «». Это может сработать, если вы затем проиндексируете его с первого "," на следующий "," и итерации по этой строке. Сплит будет работать намного лучше.

4

Строки имеют метод split() для этого. Он возвращает список:

>>> string = "The , world , is , a , happy , place " 
>>> string.split(' , ') 
['The', 'world', 'is', 'a', 'happy', 'place '] 

Как вы можете видеть, на последней строке есть конечное пространство. Приятнее способ разделить этот вид строки будет таким:

>>> [substring.strip() for substring in string.split(',')] 
['The', 'world', 'is', 'a', 'happy', 'place'] 

.strip() полосы пробельной с концов строки.

Используйте цикл for для печати слов.

2

Другой вариант:

import re 

string = "The , world , is , a , happy , place " 
match = re.findall(r'[^\s,]+', string) 
for m in match: 
    print m 

Выход

The 
world 
is 
a 
happy 
place 

См demo

Вы также можете просто использовать и вы получите тот же результат.

1

Простые благодаря удобному строковых методов в Python:

print "\n".join(token.strip() for token in string.split(",")) 

Выход:

The 
world 
is 
a 
happy 
place 

Кстати, слово string является плохим выбором для имени переменной (есть string модуль в Python).

Смежные вопросы