我有一個非常簡單的程序,解析一個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