gpt4 book ai didi

python - 将元字符作为命令行参数传递给 Python

转载 作者:太空狗 更新时间:2023-10-29 20:24:38 24 4
gpt4 key购买 nike

我正在制作一个 Python 程序,它将解析某些输入行中的字段。我想让用户从命令行输入字段分隔符作为选项。我正在使用 optparse 来执行此操作。我遇到的问题是输入类似 \t 的内容会在 \t 上按字面意思分开,而不是在选项卡上,这正是我想要的。我很确定这是 Python 的东西而不是 shell,因为我已经尝试了我能想到的引号、反斜杠和 t 的所有组合。

如果我能让 optparse 让参数成为纯输入(有这样的东西吗?)而不是 raw_input,我认为这会奏效。但我不知道该怎么做。

我也尝试过各种替换和正则表达式技巧来将字符串从两个字符 "\t" 转换为一个字符制表符,但没有成功。

例如,input.txt 是:

字段 1[tab]field\t2

(注意:[tab]是制表符,field\t2是8个字符的字符串)

解析器.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

这不是我想要的。

最佳答案

>>> r'\t\n\v\r'.decode('string-escape')
'\t\n\x0b\r'

关于python - 将元字符作为命令行参数传递给 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5753332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com