Sikuli (基於 Jython 2.7) 腳本中需輸出包含特殊符號的命令:
'sysctl -w vm.drop_caches=3' # 含等號 =
'echo $HOME' # 含美元符 $
擔心被 Python/Sikuli 解析器誤當作變量插值或語法符號。
在字符串字面量(單引號/雙引號/三引號)中,
=、$、#、%等符號**無需任何轉義**,直接書寫即可。
# Python / Jython 交互式驗證
>>> cmd = 'sysctl -w vm.drop_caches=3'
>>> print(cmd)
sysctl -w vm.drop_caches=3
>>> cmd2 = "echo $HOME"
>>> print(cmd2)
echo $HOME
>>> # 僅在 f-string / % 格式化 / .format() 中才有特殊含義
>>> f"value = {3}" # {} 為插值標記
'value = 3'
>>> "value = %d" % 3 # % 為格式化標記
'value = 3'
# Sikuli 通過 type() 輸入文本
type("sysctl -w vm.drop_caches=3") # 直接傳字符串
# 或通過 run() 執行命令
run("sysctl -w vm.drop_caches=3")
| 場景 | 示例 | 處理 |
|---|---|---|
| 字符串內含引號 | 'It\'s OK' / "He said \"Hi\"" | 反斜杠轉義 \' \" |
| 原始字符串避免轉義 | r'C:\path\to\file' | 前綴 r/R |
| f-string 表達式 | f'value = {x}' | {} 內為表達式,非字面量 |
| 正則表達式 | re.compile(r'\d+') | 原始字符串 + 正則元字符轉義 |
# -*- coding: utf-8 -*-。u'中文' (Py2) 或直接寫 (Py3)。「字面量裡的符號就是符號」—— 除非進入格式化/正則/代碼執行上下文,= $ 等在字符串中從來不需要轉義。