我有一个非常简单的程序,解析一个csv文件,其中有一行文本记录的列由单个制表符分隔。为什么不line.split(' s')和line.split()一样?
我明白splitting()默认情况下分割空白,所以不需要明确指定空白模式,但我的问题是为什么不明确指定的模式的空白工作?或者'\ s'或r'\ s'不是正确的模式/正则表达式?我在stackoverflow上搜索,发现提到字符串split()是一个较旧的方法,我不明白,因为我是非常新的python。 string split()不支持regex吗?
这里是我的代码:
#!/usr/bin/env python
import os
import re
import sys
f = open(sys.argv[1])
for line in f:
field = line.split()
field2 = line.split('\s')
print field[1], field2[1]
f.close
我试图做line.split(R '\ S'),并且也不管用,但line.split( '\ t')的作品。
Felix,所以字符串拆分不同于正则表达式拆分?我是python的新手,因此感到困惑。 – 2011-03-03 19:52:21
@软件工程师:是的,正常的'split'字面上对待字符。由于'\ s'不是特殊字符(比如'\ t'),它会尝试将字符串分割为'\ s'。 – 2011-03-03 19:55:06
是的,re.split和str.split是不同的。这两个文件可以在这里找到:http://docs.python.org/library/re.html,http://docs.python.org/library/stdtypes.html – Bernhard 2011-03-03 19:55:47