有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.
例如,假设myString定义为:
>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)
我想要一个函数(我会称之为process)这样做:
>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)
重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).
Python有功能吗?
假设我有一个字符串,它是另一个字符串的反斜杠转义版本.在Python中,有一种简单的方法可以解除字符串的问题吗?例如,我可以这样做:
>>> escaped_str = '"Hello,\\nworld!"'
>>> raw_str = eval(escaped_str)
>>> print raw_str
Hello,
world!
>>>
Run Code Online (Sandbox Code Playgroud)
但是,这涉及将(可能不受信任的)字符串传递给eval(),这是一个安全风险.标准库中是否有一个函数,它接受一个字符串并产生一个没有安全隐患的字符串?
抱歉,如果以前曾问过这个问题,我确实进行了搜索,但所有命中似乎都与python raw字符串有关,而不是argparse。
无论如何,我有一个代码,用户输入一个字符串,然后对该字符串进行处理。但是,我有一个问题,因为我希望我的代码能够区分\n和,\\n以便用户可以控制他们是否换行或\n分别出现在输出中。
这本身非常简单,并且我可以使逻辑工作来检查字符串等。但是,argparse似乎并没有保持输入字符串的原始状态。因此,如果我要写:Here is a list:\nItem 1它将解析为Here is a list:\\nItem 1。如果要在输入字符串中替换\n为\\n,则会解析出完全相同的事物,因此无法区分两者。
我可以包括bodge(例如,我可以让用户输入发言权$\n的\n出现在输出,或者只是\n一个换行符)。但这很麻烦,并使代码的使用复杂化。
有没有办法确保被argparse解析的字符串是原始的?(即,如果我输入\n它解析\n而不是\\n)
再次,很抱歉,如果以前曾有人问过这个问题,但是我找不到答案,经过一个多小时的尝试找到答案后,我没主意了(不要再犹豫了)。提前为任何和所有帮助加油。
示例代码(很抱歉,如果这不起作用,请不确定如何最好地为argparse做示例代码!):
import argparse
parser = argparse.ArgumentParser( description = 'Test.' )
parser.add_argument( 'text', action = 'store', type = str, help = 'The text to parse.' )
args = parser.parse_args( )
print( repr( args.text ) )
Run Code Online (Sandbox Code Playgroud)