#python #string #python-2.7
#python #строка #python-2.7
Вопрос:
Итак, у меня есть этот код здесь:
#assign a string to variable
x = "example text"
#create set to store separated words
xset = []
#create base word
xword = ""
for letter in x:
if letter == " ":
#add word
xset.append(xword)
#add space
xset.append(letter)
#reset base word
else:
#add letter
xword = xword letter
#back to line 9
#print set with separated words
print xset
Итак, довольно понятно, что функция for просматривает каждую букву x
, и если это не пробел, он добавляет его xword
(представьте, что это так xword = "examp" "l"
, что бы сделать xword = "exampl"
). Если это пробел, он добавляет xword
и пробел к набору и сбрасывает xword
.
Моя проблема заключается в том, что слово "text"
не включается в окончательный набор. Когда выполняется этот код и печатается набор, он выдает следующее:`[‘пример’, ‘ ‘]
Так почему же они не "text"
отображаются в наборе?
Комментарии:
1. В вашем цикле вы добавляете слово только тогда, когда нажимаете пробел. После вашего последнего слова нет пробела, поэтому последнее слово не добавляется. Попробуйте добавить
xword
в свой список (это список, а не набор) после завершения цикла.2. Я предполагаю, что вы делаете это как часть урока. В этом случае это имеет смысл. В противном случае:
xset = x.split()
3.
x.split()
это хорошо, но если вы хотите сохранить пространство в списке, сделайтеre.split("( )", x)
4.
import re
->re.split(r'(W )', x)
Ответ №1:
Потому что, когда ваш код достигает пробела в x
нем, добавляется xword
. Но это происходит только тогда, когда оно достигает пробела. Поскольку после текста нет пробелов, конечный результат xset
также не добавляется, вы не сбрасывали xword
:
#assign a string to variable
x = "example text"
#create set to store separated words
xset = []
#create base word
xword = ""
for letter in x:
if letter == " ":
#add word
xset.append(xword)
#add space
xset.append(letter)
#reset base word
xword = ""
else:
#add letter
xword = xword letter
#back to line 9
#print set with separated words
xset.append(xword)
print xset
Вывод:
['example', ' ', 'text']
Ответ №2:
Вам нужно добавить еще одно добавление после цикла, чтобы добавить последнее слово
#assign a string to variable
x = "example text"
#create set to store separated words
xset = []
#create base word
xword = ""
for letter in x:
if letter == " ":
#add word
xset.append(xword)
#add space
xset.append(letter)
#reset base word
else:
#add letter
xword = xword letter
#back to line 9
xset.append(xword)
#print set with separated words
print xset
Ответ №3:
Просто используйте string.split() . Эта команда вернет список слов в вашей строке. Вот документация по этому вопросу: https://docs.python.org/2/library/string.html
Если ваши значения разделены пробелом, сделайте что-то вроде этого:
r.split()
Out[26]: ['some', 'text', 'here']
Если ваш разделитель отличается от пробела, вы можете указать его следующим образом:
s.split(',')
Out[21]: ['some', 'text', 'here']