有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与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有功能吗?
我正在编写一个名为flac2m4a的python脚本,它调用ffmpeg将.flac文件转换为.m4a文件.核心计划是这样的:
cmd = "ffmpeg -i %s -acodec alac %s.m4a" % (sys.argv[1], sys.argv[1][:-5])
os.system(cmd)
Run Code Online (Sandbox Code Playgroud)
我可以像这样使用这个程序:
./flac2m4a path_to_the_song.flac
Run Code Online (Sandbox Code Playgroud)
但是当我为他们名字中带有特殊字符的歌曲运行时:
./flac4m4a.py Justin\ Bieber\ -\ Never\ Say\ Never\ -\ The\ Remixes/01\ -\ Never\ Say\ Never\ \(feat.\ Jaden\ Smith\).flac
Run Code Online (Sandbox Code Playgroud)
在linux下,当我按Tab键自动完成时,特殊字符将被转义为a \,但是当我从中读取它时sys.argv[1],它们将被Python转换为普通字符串:
Justin Bieber - Never Say Never - The Remixes/01 - Never Say Never (feat. Jaden Smith).flac
Run Code Online (Sandbox Code Playgroud)
所以我只想知道如何argv[1]准确读取用户输入的内容(带有那些\)
我有一个脚本,需要sys.argv,输入可能包含特殊字符(分号).我只需要输入字符串,但分号混淆了一切......
我有:
def myscript(text)
print text
a = myscript(sys.argv[1])
print a
Run Code Online (Sandbox Code Playgroud)
我尝试:
>> python script.py "With these words she greeted Prince Vasili Kuragin, a man of high rank and importance, who was the first to arrive at her reception. Anna Pavlovna had had a cough for some days. She was, as she said, suffering" from la grippe; grippe being then a new word in St. Petersburg""
Run Code Online (Sandbox Code Playgroud)
我明白了:
'With these words she greeted Prince Vasili Kuragin, a man of high rank …Run Code Online (Sandbox Code Playgroud)