teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2017/11/07 06:03

投稿

karamarimo
karamarimo

スコア2555

answer CHANGED
@@ -1,8 +1,10 @@
1
1
  いっぱいある式のORをとりたいときは`any`を使うと楽です。
2
2
  `any`の引数には`iterable`を渡せますので、各制御文字が含まれるかどうかのgenerator expressionを渡せばいいです。
3
3
 
4
+ [curses.ascii](https://docs.python.org/3.6/library/curses.ascii.html#curses.ascii.iscntrl)ライブラリにASCII制御文字かどうか調べる関数があります。
5
+
4
6
  ```lang-python
5
- ctrlStrings = ["^@", "^A", "^B"]
7
+ from curses.ascii import iscntrl
6
- if any(id.find(ctrl) != -1 for ctrl in ctrlStrings):
8
+ if any(iscntrl(c) for c in id):
7
9
  print("error")
8
10
  ```