推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
durden
V2EX  ›  Python

'12345 abcd 11/09/2012 星期二 xd'如何能将该行创建为长度为5的list

  •  
  •   durden · Sep 10, 2012 · 3983 views
    This topic created in 5014 days ago, the information mentioned may be changed or developed.
    12345 abcd 11/09/2012 星期二 xd

    我希望将该行数(存于data.txt文件中)创建为如下这个list
    [12345, abcd, 11/09/2012, 星期二, xd]

    但我用下面代码得到的却是:[12345, abcd 11/09/2012, 星期二, , , xd]

    f = open('data.txt', 'r')
    s = f.readline().split(' ')
    for i in s:
    print i
    5 replies    1970-01-01 08:00:00 +08:00
    sutar
        1
    sutar  
       Sep 10, 2012   ❤️ 1
    >>> s= u'12345 abcd 11/09/2012 星期二 xd'
    >>> s.split()
    [u'12345', u'abcd', u'11/09/2012', u'\u661f\u671f\u4e8c', u'xd']
    Sin
        2
    Sin  
       Sep 10, 2012
    查查那个 data.txt 看看有没多或者少空格……
    durden
        3
    durden  
    OP
       Sep 10, 2012
    补充一下,直接写在帖子里面看不出来,原数据为:


    12345[空格]abcd[tab]11/09/2012[空格]星期二[空格][空格]xd

    而我的split条件是[' ']
    导致了'abcd 11/09/2012'成了一个元素,而后面的两个空格也分别成了元素
    durden
        4
    durden  
    OP
       Sep 10, 2012
    @sutar 谢谢,原来用split(),而非split(' ')就行了...
    ccp0101
        5
    ccp0101  
       Sep 10, 2012
    要更多控制的话用regex.

    >>> import re
    >>> text = "aa bb\t c"
    >>> re.split(r'[\s\t]+', text)
    ['aa', 'bb', 'c']
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:35 · PVG 04:35 · LAX 13:35 · JFK 16:35
    ♥ Do have faith in what you're doing.