일부 입력 줄에서 필드를 구문 분석 할 Python 프로그램을 만들고 있습니다. 사용자가 명령 줄에서 옵션으로 필드 구분 기호를 입력하도록하고 싶습니다. 이 작업을 수행하려면 optparse
을 사용하고 있습니다. 나는 \t
과 같은 것을 입력하는 것이 내가 원하는 것보다 문자 그대로 \t
에 분리된다는 문제에 직면 해있다. 나는 이것이 내가 생각할 수있는 따옴표, 백 슬래시, 그리고 t
의 모든 콤보를 시도했기 때문에 이것이 파이썬이면서 껍질이 아니라는 것을 확신한다.메타 문자를 파이썬에 명령 줄에서 인수로 전달
raw_input
이 아닌 인수가 일반 입력이되도록 optparse
을 얻을 수 있다면 제대로 작동한다고 생각합니다. 그러나 나는 그것을 할 수있는 방법이 없습니다.
나는 또한 두 문자 "\t"
에서 문자열을 하나의 문자 탭으로 바꾸기 위해 여러 가지 대체 및 정규식을 시도했지만 성공하지는 못했습니다.
field 1[tab]field\t2
(참고 : [tab]
는 탭 문자이고 field\t2
은 8 문자 스트링) input.txt
는
예
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
이 내가 원하는 것이 아니다.
멋진 깨끗한 해결책 – user237419
고맙습니다. – Darlingtonia