我有一个非常非常简单的程序,它解析一个csv文件,该文件有一行文本记录,其列由一个制表符分隔.
我理解split()默认情况下拆分空格,因此不需要显式指定空格模式,但我的问题是为什么明确指定的空格模式不起作用?或者'\ s'或r'\ s'不是正确的模式/正则表达式?我在stackoverflow上搜索并发现提到字符串split()是一个较旧的方法,我不太懂,因为我对python很新.字符串split()不支持正则表达式吗?
这是我的代码:
#!/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
Run Code Online (Sandbox Code Playgroud)
我尝试使用line.split(r'\ s'),但这也不起作用,但是line.split('\ t')可以正常工作.
因为\t实际上表示字符串中的制表符(就像\n新行字符一样,请参见此处的有效转义序列列表),但它\s是白色空格的特殊正则表达式字符类.
str.split[docs]不接受正则表达式.如果要使用正则表达式进行拆分,则必须使用re.split [docs].
示范:
>>> import re
>>> str = "This\sis a weird\sstring"
>>> str.split("\s") # treated literally
['This', 'is a weird', 'string']
>>> re.split("\s", str) # regex
['This\\sis', 'a', 'weird\\sstring']
Run Code Online (Sandbox Code Playgroud)