gradioを使っている時のpythonとjavascriptのメモ
gradioでアプリを作っているとpythonとjavascriptがごっちゃになってすぐに忘れることをメモしておく。
gradio
gradio: 3.41.2 (A1111)
gradio: 4.40.0 (Forge)
python
代入する値にカンマがあるとタプルになる。エラーにならないので気づくのが遅れる。
>>> a = 123,
>>> print(type(a))
<class 'tuple'>文字列
空文字列のチェック
>>> a = None
>>> print("True" if a else "False" )
False>>> a = ""
>>> print("True" if a else "False" )
False>>> a ="test"
>>> print("True" if a else "False" )
True>>> a = None >>> print("True" if a is None else "False" ) True
>>> a = "" >>> print("True" if a is None else "False" ) False
文字列の一致
>>> "A" in "ABCDEF" True >>> "a" in "ABCDEF" False
>>> "C" in "ABCDEF" True >>> "DE" in "ABCDEF" True >>> "CB" in "ABCDEF" False
文字列前後の文字を削除
>>> " test Test ".strip() 'test Test'
任意の文字を削除できる。stripの引数は文字列として扱われるわけではない。一文字づつ評価され、それ以外の文字が現れるまで削除対象
>>> " AB test TestCD E F ".strip() 'AB test TestCD E F'
>>> " AB test TestCD E F ".strip(" BA")
'test TestCD E F'>>> " AB test TestCD E F ".strip(" BAE")
'test TestCD E F'
>>> " AB test TestCD E F ".strip(" BAF")
'test TestCD E'
>>> " AB test TestCD E F ".strip(" BAFE")
'test TestCD'list
>>> list1 = [ "item1", "item2", "item3" ]
>>> print(tuple(item for item in list1))
('item1', 'item2', 'item3')条件で除外
>>> list1 = [ "item1", "item2", "item3" ]
>>> print(tuple(item for item in list1 if item != "item2"))
('item1', 'item3')
インデックス
>>> list1 = [ "item1", "item2", "item3" ]
>>> print({item: i for i, item in enumerate(list1) if item != "item2"})
{'item1': 0, 'item3': 2}
>>> list1 = [ "item1", "item2", "item3" ]
>>> list2 = [ "value1", "value2", "value3" ]
>>> print({item: list2[i] for i, item in enumerate(list1) if item != "item2"})
{'item1': 'value1', 'item3': 'value3'}
zip 短い方のリストに合わせてループ
>>> list1 = [ "item1", "item2", "item3" ]
>>> list2 = [ "value1", "value2", "value3" ]
>>> print({itemA: itemB for itemA, itemB in zip(list1, list2) if itemA != "item2"})
{'item1': 'value1', 'item3': 'value3'}ぢdict
>>> d1 = { "key1":"value1", "key2":"value2", "key3": "value3"}
>>> for k in d1:
print(k)
key1
key2
key3
>>> d1 = { "key1":"value1", "key2":"value2", "key3": "value3"}
>>> for v in d1.values():
... print(v)
...
value1
value2
value3
KeyとValue両方
>>> d1 = { "key1":"value1", "key2":"value2", "key3": "value3"}
>>> for k, v in d1.items():
... print(k, v)
...
key1 value1
key2 value2
key3 value3
除外
>>> d1 = { "key1":"value1", "key2":"value2", "key3": "value3"}
>>> {k: v for k, v in d1.items() if k != "key2"}
{'key1': 'value1', 'key3': 'value3'}
検索 文字列と違い部分一致ではない
>>> d1 = { "key1":"value1", "key2":"value2", "key3": "value3"}
>>> "key" in d1
False
>>> "key2" in d1
True
>>> "value2" in d1.values()
True
>>> "value" in d1.values()
Falseさ三項演算子
優先順位
>>> 10 + 20 if True else 0
30
>>> 10 + 20 if False else 0
0
>>> 10 + (20 if False else 0)
10
>>> "ABC" + "DEF" if True else "GHI"
'ABCDEF'
>>> "ABC" + "DEF" if False else "GHI"
'GHI'
>>> "ABC" + ("DEF" if False else "GHI")
'ABCGHIJSON
import json
エンコード
json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
> '["foo", {"bar": ["baz", null, 1.0, 2]}]'デコード
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
> ['foo', {'bar': ['baz', None, 1.0, 2]}]javascript
JSON string
JSON Stringのキーはダブルクォートでくくる。シングルクォートだとエラーになる。Pythonだとシングルクォートになる事がある。
let a = "{ 'key': 'なんちゃら'}";
let b = JSON.parse(a);to JSON string mdn web docs
JSON.stringify({"key": "value"});from JSON string mdn web docs
json = '{"key": "value"}';
JSON.parse(json);文字列前後のスペースを削除
const greeting = ' Hello world! '; console.log(greeting.trim()); // Expected output: "Hello world!";
正規表現を使えばPythonのStripみたいにできる
const s1 = " Hello, World! "; const s2 = s1.replace(/^\s+|\s+$/g, ""); console.log(s2); > Hello, World!
コメント
コメントを投稿