为什么Python中的字符串split()方法没有分割?

6
我有以下Python代码。
class MainPage(BaseHandler):

    def post(self, location_id):
        reservations = self.request.get_all('reservations')
        for r in reservations:
            a=str(r)
            logging.info("r: %s " % r)
            logging.info("lenr: %s " % len(r))
            logging.info("a: %s " % a)
            logging.info("lena: %s " % len(a))
            r.split(' ')
            a.split(' ')
            logging.info("split r: %s " % r)
            logging.info("split a: %s " % a)

我得到了以下日志输出。
INFO     2012-09-02 17:58:51,605 views.py:98] r: court2 13 0 2012 9 2 
INFO     2012-09-02 17:58:51,605 views.py:99] lenr: 20 
INFO     2012-09-02 17:58:51,605 views.py:100] a: court2 13 0 2012 9 2 
INFO     2012-09-02 17:58:51,606 views.py:101] lena: 20 
INFO     2012-09-02 17:58:51,606 views.py:108] split r: court2 13 0 2012 9 2 
INFO     2012-09-02 17:58:51,606 views.py:109] split a: court2 13 0 2012 9 2 

如果我使用 split() 而不是 split(' '),我会得到相同的日志输出。

为什么 split 没有将结果拆分成包含 6 个条目的列表?我想问题可能在于涉及了 http 请求,因为在 gae 交互式控制台中进行的测试得到了预期的结果。

3个回答

14

split 不会修改原字符串,而是返回一个由拆分后的部分组成的列表。如果你想使用这个列表,你需要将其赋值给一个变量,比如说 r = r.split(' ')


4

split 不会分割原始字符串,而是返回一个列表。

>>> r  = 'court2 13 0 2012 9 2'
>>> r.split(' ')
['court2', '13', '0', '2012', '9', '2']

4

改变

r.split(' ')
a.split(' ')

to

r = r.split(' ')
a = a.split(' ')

说明: split 方法不会直接改变原字符串,而是返回一个拆分后的版本。

文档解释:

split(...)

    S.split([sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string S, using sep as the
    delimiter string.  If maxsplit is given, at most maxsplit
    splits are done. If sep is not specified or is None, any
    whitespace string is a separator and empty strings are removed
    from the result.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接