我正在嘗試使用以下方法將此字串分隔成一個串列regex:
-y -hwaccel cuda -threads 8 -loglevel error -hide_banner -stats -i - -c:v hevc_nvenc -rc constqp -preset p7 -qp 18 C:\Users\User\Documents\Python\Smoothie\test 124\Resampled_vid.mp4
我正在使用以下方法將其分開:
split(r'(?!\\)' '\s ',f"{Settings[1]}".format(Input=InFile,Output=OutFile))
Output:
['-y', '-hwaccel', 'cuda', '-threads', '8', '-loglevel', 'error', '-hide_banner', '-stats', '-i', '-', '-c:v', 'hevc_nvenc', '-rc', 'constqp', '-preset', 'p7', '-qp', '18', 'C:\\Users\\User\\Documents\\Python\\Smoothie\\test', '124\\Resampled_vid.mp4']
期望的輸出:
['-y', '-hwaccel', 'cuda', '-threads', '8', '-loglevel', 'error', '-hide_banner', '-stats', '-i', '-', '-c:v', 'hevc_nvenc', '-rc', 'constqp', '-preset', 'p7', '-qp', '18', 'C:\\Users\\User\\Documents\\Python\\Smoothie\\test 124\\Resampled_vid.mp4']
無論如何,我可以完全避免在檔案路徑上拆分嗎?
uj5u.com熱心網友回復:
我會re.findall在這里使用一種方法:
inp = "-y -hwaccel cuda -threads 8 -loglevel error -hide_banner -stats -i - -c:v hevc_nvenc -rc constqp -preset p7 -qp 18 C:\Users\User\Documents\Python\Smoothie\test 124\Resampled_vid.mp4"
parts = re.findall(r'[A-Z] :(?:\\[^\\] ) \.\w |\S ', inp)
print(parts)
['-y', '-hwaccel', 'cuda', '-threads', '8', '-loglevel', 'error', '-hide_banner',
'-stats', '-i', '-', '-c:v', 'hevc_nvenc', '-rc', 'constqp', '-preset', 'p7',
'-qp', '18',
'C:\\Users\\User\\Documents\\Python\\Smoothie\test 124\\Resampled_vid.mp4']
此處使用的正則運算式模式表示匹配,或者:
[A-Z] :(?:\\[^\\] ) \.\w a file path
| OR
\S any group of non whitespace characters
這里的訣竅是首先急切地嘗試匹配檔案路徑。只有失敗了,我們才會嘗試一次匹配一個單詞/術語。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420681.html
標籤:
