質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2928閲覧

Pythonで特殊文字をエスケープしたい

begenner

総合スコア79

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/07 03:15

編集2019/07/09 06:25

Python初心者です。
gui操作ができるpyautoguiというライブラリを知ったので
それを使って試しにcssを記述してみようとしましたが
{}:
が違う文字に変換されてうまくいきません(m_ m)
わかる方がいらっしゃれば教えていただきますようよろしくお願いいたします(m
_m)

###エラー内容

  • { -> `
  • : -> +
  • } -> {

に変換されてしまう
###期待する動作

  • {
  • :
  • }

がそのまま入力されるようにしたい
###動作環境
OS:mac

Python: 3.7.3

pyautogui: 0.9.45
キーボード: JIS配列
特殊な設定: 該当キーに割り当てなし
(Karabiner-Elementsを使用しています)

###参考サイト
PyAutoGUIでマウス操作などのGUI操作する方法 - 白猫学生のブログ
###試したこと

  • バッククォートを上記の3つの前に挿入
  • ダブルクォートをシングルクォートに変更する

などしてみましたがうまくいきませんでした(m_ _m)

2019/07/09追記

USキーボードと日本のキーボードの違い

{ -> ` になることから

逆に `` を入力すればと思いましたがうまくいきませんでした(m_ _m)

また、hayataka2049さんのアドバイスから

を参考に_pyautogui_osx.py

python

1: 2: 3def _keyDown(key): 4 if key not in keyboardMapping or keyboardMapping[key] is None: 5 return 6 7 needsShift = pyautogui.isShiftCharacter(key) 8 if key == ':': needsShift = False 9 if key == '^': needsShift = False 10 if key == ':': needsShift = False 11: 12:

としてみましたがうまくいきませんでした。
###該当のソースコード

python

1import pyautogui 2import re 3import os 4import subprocess 5import sys 6import time 7 8pyautogui.typewrite(".sample { \nmax-width: 100%;\nmax-height: 100%;\n}", 0)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/07/07 20:50 編集

macのキーボードがJIS配列なのか、英字配列なのかの情報を追記しておいてください。あと、キーボード周りでなにか特殊な設定をしていないのかも。その辺があやしい気がします。
begenner

2019/07/09 06:29 編集

http://code.hounen-mansaku.com/archives/136 こちらの記事がみつかり pyperclip.copy("日本語!") pyautogui.hotkey("command","v") とすればうまくいきました!! とりあえずこれでしのぎます!! ありがとうございました!!
guest

回答1

0

ベストアンサー

キーボードのJIS配列とUS配列が絡んでいる気がします。

https://qiita.com/hachisukansw/items/efd4b3c2df7e6a8b3779

きっと:で(JISキーボードの)shift +の位置のキーコードが送信される実装なのでしょう。彼の国の配列ならそれで実際:になるらしいのですが、残念ながらJIS配列では+が入力されます。

開発者も問題があることは把握しているようですが、対応はされていません。以下をチェックしてみてください。

https://github.com/asweigart/pyautogui/issues/137

ライブラリ自体がサポートしていないので、なかなかいい方法はありません。マシンの配列設定をUS配列に切り替えて使えばいけるかもしれませんが、そんな不便なことはしたくありませんよね。なので、実用的に使うのはなかなか難しいと思います。やるとしたら、コマンドを投げる前に逆変換する関数を自分で定義することでしょう。

投稿2019/07/07 21:05

編集2019/07/07 21:07
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

begenner

2019/07/08 23:59

的確な回答いただきありがとうございます。 >やるとしたら、コマンドを投げる前に逆変換する関数を自分で定義することでしょう。 おっしゃっていることを実現しょうと自分でググって見ましたが、それらしい記事が見当たりませんでした。 大変お手数ですが、参考になりそうなサイトとそのサイトに行きついたときにググったワードを教えていただけると大変助かります(m_ _m)
hayataka2049

2019/07/09 01:01

そのものずばりの記事はないと思いますが、 jis us キーボード キーコード などで参考情報が見つかりませんか?
hayataka2049

2019/07/09 01:03

ああ、pyperclipと組み合わせてctrl vを送れと言っているサイトもありましたね。「キー入力」の必要がなければそちらでもいいと思います。
begenner

2019/07/09 06:29

http://code.hounen-mansaku.com/archives/136 こちらの記事がみつかり pyperclip.copy("日本語!") pyautogui.hotkey("command","v") とすればうまくいきました!! とりあえずこれでしのぎます!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問