我分割字符串的方式有什么问题?
我查了我的书和文档,然后做了这个:
a = "hello"
b = a.split(sep= ' ')
print(b)
但是我收到一个错误,提示说 split() 不接受关键字参数。这是怎么回事呢?
我想得到 ['h','e','l','l','o'] 这个结果。我试着不传入分隔符,直接用 a.split(' '),结果却得到了 ['hello']。
4 个回答
给定一个字符串 x
,用Python的方式把它拆分成单个字符的方法是:
for c in x:
print c
如果你真的需要一个列表的话,
redundant_list = list(x)
我觉得把字符串拆分成字符列表有点多余,因为这样做不够简洁,而且常常会受到C语言处理字符串方式的影响。
你可以试试这样:
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(' ')
则是每当看到空格就分割 "hello",但 "hello" 里没有空格。
如果你想要一个字母的数组,可以使用 列表推导式。比如 [letter for letter in string]
,例如 [letter for letter in "hello"]
,或者直接用 list
构造函数,像这样 list("hello")
。
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)
注意,你可以改变关键字参数的顺序。