如何在python中从命令行接收正则表达式

如何在python中从命令行接收正则表达式,python,regex,command-line-arguments,Python,Regex,Command Line Arguments,我想从命令行接收像“\t”(tab)这样的分隔符, 并使用它来解析文本文件 如果我把 delimiter = sys.argv[1] 在代码中,并从命令行键入 $ python mycode.py "\t" 分隔符是'\\t',即python会按原样保留输入字符串 我想将其转换为'\t',以便使用,例如 'a\tb\tc'.split(delimiter) 获取['a','b','c'] 我尝试将“\”转换为“\”,但失败 是否有一个内置的python函数从命令行处理regex?您要找的不

我想从命令行接收像“\t”(tab)这样的分隔符, 并使用它来解析文本文件

如果我把

delimiter = sys.argv[1]
在代码中,并从命令行键入

$ python mycode.py "\t"
分隔符是
'\\t'
,即python会按原样保留输入字符串

我想将其转换为'\t',以便使用,例如

'a\tb\tc'.split(delimiter)
获取
['a','b','c']

我尝试将“\”转换为“\”,但失败


是否有一个内置的python函数从命令行处理regex?

您要找的不是真正的regexp,而是转义序列

您可以使用
eval
,只要您完全了解可怕的安全后果,或者使用自己的字符串替换/regexp-based转义序列unescaper

(谁知道呢,也许
arg=arg.replace(\\t“,“\t”)
就足够了?)

作为一种解决办法,你可以这样做

$ python mycode.py `echo -ne '\t'`

要(ab)使用Unix echo命令为您执行取消跳过操作。

在Python 2中,您可以使用
str.decode('string_escape')

在Python 3中,必须首先将字符串编码为字节,然后使用
unicode\u escape

>>> '\\t'.encode().decode('unicode_escape')
'\t'
这两种解决方案都接受任何转义序列,并将正确解码,因此您甚至可以使用一些奇特的unicode代码:

>>> '\\t\\n\\u2665'.encode().decode('unicode_escape')
'\t\n♥'

为什么不使用?我认为这是解决我问题的最简单的方法。我发现我搜索了错误的关键字。谢谢大家!
>>> '\\t\\n\\u2665'.encode().decode('unicode_escape')
'\t\n♥'