Передача метасимволов в Python в качестве аргументов из командной строки

Я делаю программу на Python, которая анализирует поля в некоторых строках ввода. Я хотел бы позволить пользователю вводить разделитель полей в качестве опции из командной строки. Для этого я использую optparse . Я столкнулся с проблемой, что ввод чего-то вроде \ t будет отделяться буквально от \ t , а не на вкладке, как я хочу. Я почти уверен, что это Python, а не оболочка, так как я пробовал каждую комбинацию кавычек, обратных косых черт и t , о которых я могу думать.

Если бы я мог получить optparse , чтобы аргумент был простым вводом ( есть такая штука?), а не raw_input , я думаю, это сработает. Но я понятия не имею, как это сделать.

Я также пробовал различные замены и уловки с регулярными выражениями, чтобы превратить строку из двух символов «\ t» в односимвольную вкладку, но безуспешно .

Пример, где input.txt - это:

поле 1 [вкладка] поле \ t2

(Примечание: [вкладка] является символом табуляции, а поле \ 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

Это не то, что я хочу.

9
задан DocMax 10 January 2013 в 07:16
поделиться