从命令行将元字符作为参数传递给Python
||
我正在制作一个Python程序,它将解析某些输入行中的字段。我想让用户从命令行输入字段分隔符作为选项。我正在使用
optparse
进行此操作。我遇到了这样的问题,即输入\\t
会在\\t
而不是选项卡上按字面意义分开,这正是我想要的。我非常确定这是Python而不是Shell,因为我已经尝试了所有可以想到的引号,反斜杠和t
\的组合。
如果我能得到optparse
而不是raw_input
来将参数设为普通输入(是否有这样的事情?),我认为这会起作用。但是我不知道该怎么做。
我还尝试了各种替换和正则表达式技巧,将字符串从两个字符ѭ6转换为一个字符选项卡,但没有成功。
例如,input.txt
是:
field 1[tab]field\\t2
(注意:“ 9”是制表符,“ 10”是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
这不是我想要的。
没有找到相关结果
已邀请:
4 个回复
悲帽慑彤电
缔恃钨
那里有多余的空字典,以防止意外破坏程序。
碉罕城爸
您可以调整re以匹配更多转义的字符(\\ n,\\ r等) 解决python之外问题的另一种方法: 当您从shell调用脚本时,请按照以下步骤操作:
^ V表示\“按Ctrl + V \” 然后按普通Tab键 这将正确地将制表符传递给您的python脚本;
缉康怪
选项是处理棘手情况的好方法:
与相应的功能(然后在解析器之前定义):
您可以通过以下命令行检查此功能:
(在
周围没有引号,它们没有用)。 它具有通过“ optparse”模块而不是通过对解析结果进行后处理来处理选项的优势。