如何从 Python 的命令行接收正则表达式

2024-04-24 00:02:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从命令行接收分隔符,如'\t'(tab), 并使用它来解析文本文件。在

如果我把

delimiter = sys.argv[1]

在代码中,并从命令行键入

^{pr2}$

分隔符是'\\t',也就是说,python会按原样保存输入字符串。在

我想把它转换成'\t',这样我就可以使用例如

'a\tb\tc'.split(delimiter)

得到['a','b','c']。在

我试图把'\'转换成'\',但失败了。在

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


Tags: 字符串代码命令行键入systabtb内置
2条回答

在Python2中,可以使用str.decode('string_escape')

>>> '\\t'.decode('string_escape')
'\t'

在Python3中,必须先将字符串编码为字节,然后使用unicode_escape

^{pr2}$

这两种解决方案都接受任何转义序列并将其正确解码,因此您甚至可以使用一些奇特的unicode代码:

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

你要找的不是真正的regexp,而是转义序列。在

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

(谁知道呢,也许arg = arg.replace("\\t", "\t")对你来说就足够了?)在

作为一种解决办法

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

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

相关问题 更多 >