我正在编写一个Python程序,用于解析一些输入行中的字段。我希望让用户从命令行输入字段分隔符作为选项。我使用
如果我可以让
我还尝试了各种替换和正则表达式技巧,将字符串从两个字符的
示例,其中
这给了我:
这不是我想要的。
optparse
来实现这一点。我遇到了一个问题,就是输入类似\t
的内容会按照字面意义进行分隔,而不是按照制表符进行分隔,而我需要的是后者。我相信这是一个Python的问题,而不是shell的问题,因为我已经尝试了各种引号、反斜杠和t
的组合。如果我可以让
optparse
让参数成为普通输入(是否有这样的东西?)而不是raw_input
,我认为那将起作用。但是我不知道如何做到这一点。我还尝试了各种替换和正则表达式技巧,将字符串从两个字符的
"\t"
转换为一个字符的制表符,但没有成功。示例,其中
input.txt
为:
field 1[tab]field\t2
(注意:[tab]
是一个制表符,field\t2
是一个8个字符的字符串)
parseme.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
这不是我想要的。