V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2012-09-10 21:10:15 +08:00 · 3235 次点击
    这是一个创建于 4456 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    1970-01-01 08:00:00 +08:00
    sutar
        1
    sutar  
       2012-09-10 21:16:59 +08:00   ❤️ 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  
       2012-09-10 21:17:03 +08:00
    查查那个 data.txt 看看有没多或者少空格……
    durden
        3
    durden  
    OP
       2012-09-10 21:17:23 +08:00
    补充一下,直接写在帖子里面看不出来,原数据为:


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

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

    >>> import re
    >>> text = "aa bb\t c"
    >>> re.split(r'[\s\t]+', text)
    ['aa', 'bb', 'c']
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1133 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:47 · PVG 02:47 · LAX 10:47 · JFK 13:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.