我正在制作一个 Python 程序,它将解析一些输入行中的字段。我想让用户从命令行输入字段分隔符作为选项。我optparse
用来做这个。我遇到了这样的问题,输入类似的\t
内容会逐字分开\t
,而不是在选项卡上,这就是我想要的。我很确定这是 Python 的东西,而不是 shell,因为我已经尝试了所有t
我能想到的引号、反斜杠和 's 的组合。
如果我可以optparse
让论点成为简单的输入(有这样的事情吗?)而不是raw_input
,我认为这会起作用。但我不知道该怎么做。
我还尝试了各种替换和正则表达式技巧将字符串从两个字符"\t"
转换为一个字符选项卡,但没有成功。
示例,其中input.txt
是:
field 1[tab]field\t2
(注:[tab]
是制表符,field\t2
是8个字符的字符串)
解析.py:
#!/usr/bin/python
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-d", "--delimiter", action="store", type="string",
dest="delimiter", default='\t')
parser.add_option("-f", dest="filename")
(options, args) = parser.parse_args()
Infile = open(options.filename, 'r')
Line = Infile.readline()
Fields = Line.split(options.delimiter)
print Fields[0]
print options.delimiter
Infile.close()
这给了我:
$ parseme.py -f input.txt
field 1
[tab]
嘿,太好了,默认设置工作正常。(是的,我知道我可以将 \t 设为默认值并忘记它,但我想知道如何处理此类问题。)
$ parseme.py -f input.txt -d '\t'
field 1[tab]field
\t
这不是我想要的。