相关疑难解决方法(0)

在Python中处理字符串中的转义序列

有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与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 string escaping

93
推荐指数
4
解决办法
8万
查看次数

如何在不转义字符串的情况下读取argv值?

我正在编写一个名为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]准确读取用户输入的内容(带有那些\)

python linux

2
推荐指数
1
解决办法
642
查看次数

Python转义sys argv中的特殊字符

我有一个脚本,需要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)

python string bash command-line argv

1
推荐指数
1
解决办法
4278
查看次数

标签 统计

python ×3

string ×2

argv ×1

bash ×1

command-line ×1

escaping ×1

linux ×1