Passar meta-caracteres para Python como argumentos da linha de comando
Estou criando um programa Python que analisa os campos em algumas linhas de entrada. Gostaria de deixar o usuário inserir o separador de campos como uma opção na linha de comando. Estou a usaroptparse
para fazer isso. Estou enfrentando o problema de inserir algo como\t
se separará literalmente em\t
, em vez de em uma guia, que é o que eu quero. Tenho certeza de que isso é uma coisa de Python e não o shell, pois tentei todas as combinações de aspas, barras invertidas et
o que eu consigo pensa
Se eu conseguisseoptparse
para deixar o argumento ser simples (existe algo assim?) em vez deraw_input
, Acho que funcionaria. Mas não tenho idéia de como fazer iss
Eu também tentei várias substituições e truques de expressões regulares para transformar a string dos dois caracteres"\t"
na guia de um caractere, mas sem sucesso.
Exemplo, ondeinput.txt
é
field 1[tab]field\t2
(Nota:[tab]
é um caractere de tabulação efield\t2
é uma cadeia de 8 caracteres)
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()
Isso me dá:
$ parseme.py -f input.txt
field 1
[tab]
Hey, ótimo, a configuração padrão funcionou corretamente. (Sim, eu sei que poderia apenas fazer o padrão e esquecê-lo, mas gostaria de saber como lidar com esse tipo de problema.)
$ parseme.py -f input.txt -d '\t'
field 1[tab]field
\t
ão é isso que eu quer