что не так с тем, как я разделяю строку в Python? - PullRequest
7 голосов
/ 10 октября 2010

Я посмотрел в своей книге и в документации, и сделал это:

a = "hello"
b = a.split(sep= ' ')
print(b)

Я получаю ошибку, говоря, что split () не принимает аргументов ключевого слова.Что не так?

Я хочу получить ['h', 'e', ​​'l', 'l', 'o'] Я пытался не передавать sep и просто a.split (''),и получил ['привет']

Ответы [ 4 ]

6 голосов
/ 10 октября 2010

Python допускает концепцию, называемую «аргументы ключевого слова», где вы указываете, какой параметр вы передаете при вызове функции. Однако стандартная функция split() не принимает этот тип параметра.

Чтобы разбить строку на список символов, используйте list():

>>> a = "hello"
>>> list(a)
['h', 'e', 'l', 'l', 'o']

В качестве примера можно привести следующие параметры ключевых слов:

def foo(bar, baz=0, quux=0):
    print "bar=", bar
    print "baz=", baz
    print "quux=", quux

Вы можете вызвать эту функцию несколькими различными способами:

foo(1, 2, 3)
foo(1, baz=2, quux=3)
foo(1, quux=3, baz=2)

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

4 голосов
/ 10 октября 2010

попробуйте просто:

a = "hello"
b = a.split(' ')
print(b)

обратите внимание на разницу: a.split(' ') вместо a.split(sep=' '). Несмотря на то, что документация называет аргумент "sep", это действительно только для целей документации. На самом деле он не принимает аргументы ключевых слов.

В ответ на комментарий ОП к этому сообщению:

"a b c,d e".split(' ') разделяет "a b c, d e" на массив строк. Каждое найденное '' рассматривается как разделитель. Таким образом, отдельные строки ["a", "b", "c,d", "e"]. "hello".split(' ') разделяет "привет" каждый раз, когда видит пробел, но в "привет" пробелов нет

Если вы хотите получить массив букв, используйте понимание списка . [letter for letter in string], например [letter for letter in "hello"], или просто используйте конструктор list, как в list("hello").

2 голосов
/ 10 октября 2010

Учитывая строку x, Pythonic способ разделить ее на отдельные символы:

for c in x:
    print c

Если вам абсолютно необходим список, тогда

redundant_list = list(x)

Я вызываю списокизбыточность строки, разбитой на список символов, менее лаконична и часто отражает шаблоны обработки строк, на которые влияет C.

0 голосов
/ 10 октября 2010

Попробуйте:

a = "hello"
b = list(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...