[解決済み] 文字列の値の前に付ける「u」記号の意味とは?重複
質問
はい、簡単に言うと、私のキーと値の前にuが表示される理由を知りたいのです。
私はフォームをレンダリングしています。フォームには、特定のラベルのためのチェックボックスと、IP アドレスのための 1 つのテキストフィールドがあります。キーが list_key にハードコードされているラベルで、辞書の値がフォームの入力 (list_value) から取得される辞書を作成しています。辞書は作成されましたが、いくつかの値の前に u が付いています。
{u'1': {'broadcast': u'on', 'arp': '', 'webserver': '', 'ipaddr': u'', 'dns': ''}}
誰か私が間違っていることを説明してください。私はpyscripterで同様のメソッドをシミュレートするときにエラーが発生しません。コードを改善するためのいかなる提案も歓迎します。ありがとうございます。
#!/usr/bin/env python
import webapp2
import itertools
import cgi
form ="""
<form method="post">
FIREWALL
<br><br>
<select name="profiles">
<option value="1">profile 1</option>
<option value="2">profile 2</option>
<option value="3">profile 3</option>
</select>
<br><br>
Check the box to implement the particular policy
<br><br>
<label> Allow Broadcast
<input type="checkbox" name="broadcast">
</label>
<br><br>
<label> Allow ARP
<input type="checkbox" name="arp">
</label><br><br>
<label> Allow Web traffic from external address to internal webserver
<input type="checkbox" name="webserver">
</label><br><br>
<label> Allow DNS
<input type="checkbox" name="dns">
</label><br><br>
<label> Block particular Internet Protocol address
<input type="text" name="ipaddr">
</label><br><br>
<input type="submit">
</form>
"""
dictionarymain={}
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write(form)
def post(self):
# get the parameters from the form
profile = self.request.get('profiles')
broadcast = self.request.get('broadcast')
arp = self.request.get('arp')
webserver = self.request.get('webserver')
dns =self.request.get('dns')
ipaddr = self.request.get('ipaddr')
# Create a dictionary for the above parameters
list_value =[ broadcast , arp , webserver , dns, ipaddr ]
list_key =['broadcast' , 'arp' , 'webserver' , 'dns' , 'ipaddr' ]
#self.response.headers['Content-Type'] ='text/plain'
#self.response.out.write(profile)
# map two list to a dictionary using itertools
adict = dict(zip(list_key,list_value))
self.response.headers['Content-Type'] ='text/plain'
self.response.out.write(adict)
if profile not in dictionarymain:
dictionarymain[profile]= {}
dictionarymain[profile]= adict
#self.response.headers['Content-Type'] ='text/plain'
#self.response.out.write(dictionarymain)
def escape_html(s):
return cgi.escape(s, quote =True)
app = webapp2.WSGIApplication([('/', MainHandler)],
debug=True)
どのように解決するのですか?
文字列の値の前にある「u」は、その文字列がUnicode文字列であることを意味します。Unicode は、通常の ASCII が管理できるよりも多くの文字を表現する方法です。が表示されているということは
u
文字列はPython 3ではデフォルトでUnicodeですが、Python 2では
u
を前に置くことで、Unicode文字列を区別することができます。この回答の残りの部分は、Python 2に焦点を当てます。
Unicode文字列は複数の方法で作成することができます。
>>> u'foo'
u'foo'
>>> unicode('foo') # Python 2 only
u'foo'
しかし、本当の理由は、このようなものを表現するためです( 翻訳はこちら ):
>>> val = u'Ознакомьтесь с документацией'
>>> val
u'\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439'
>>> print val
Ознакомьтесь с документацией
ほとんどの場合、Unicodeと非Unicodeの文字列はPython 2上で相互運用が可能です。
他にも、"raw" シンボルのような、目にすることがあるシンボルがあります。
r
のように、バックスラッシュを解釈しないように文字列を指定するための記号もあります。これは正規表現を書くのに非常に便利です。
>>> 'foo\"'
'foo"'
>>> r'foo\"'
'foo\\"'
Python 2ではUnicodeと非Unicodeの文字列を等しくすることができます。
>>> bird1 = unicode('unladen swallow')
>>> bird2 = 'unladen swallow'
>>> bird1 == bird2
True
が、Python 3ではありません。
>>> x = u'asdf' # Python 3
>>> y = b'asdf' # b indicates bytestring
>>> x == y
False
関連
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] Pythonの関数定義における->の意味とは?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Python百行で韓服サークルの画像クロールを実現する
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
PythonによるExcelファイルの一括操作の説明
-
Pythonの@decoratorsについてまとめてみました。
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] Pythonの文字列は[u'String]と表示されます。
-
[解決済み】Pythonの文字列のu接頭辞は何ですか?