문자열 값 앞에 있는 'u' 기호는 무엇을 의미합니까?
네, 간단히 말해서 저는 왜 제 키와 가치 앞에 u가 있는지 알고 싶습니다.
양식을 렌더링합니다.양식에는 특정 레이블에 대한 확인란이 있고 IP 주소에 대한 텍스트 필드가 하나 있습니다.list_key에 하드코드되어 있고 사전의 값은 양식 입력(list_value)에서 가져온 레이블인 키로 사전을 만들고 있습니다.사전이 만들어지지만 일부 값에 대해서는 u가 앞에 나옵니다.다음은 사전의 샘플 출력입니다.
{u'1': {'broadcast': u'on', 'arp': '', 'webserver': '', 'ipaddr': u'', 'dns': ''}}
누가 제가 뭘 잘못하고 있는지 설명해 주시겠습니까?유사한 방법을 pyscript에서 시뮬레이션할 때 오류가 발생하지 않습니다.코드를 개선하기 위한 어떠한 제안도 환영합니다.감사해요.
#!/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'는 문자열이 유니코드 문자열임을 의미합니다.유니코드는 일반 ASCII가 관리할 수 있는 것보다 더 많은 문자를 나타내는 방법입니다.당신이 보고 있다는 사실은u
Python 2에 있다는 의미 - 문자열은 Python 3에서는 기본적으로 유니코드이지만 Python 2에서는u
앞에서는 유니코드 문자열을 구분합니다.이 답변의 나머지 부분은 Python 2에 초점을 맞출 것입니다.
유니코드 문자열은 여러 가지 방법으로 만들 수 있습니다.
>>> 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
Ознакомьтесь с документацией
대부분의 경우 유니코드 문자열과 비 유니코드 문자열은 Python 2에서 상호 운용할 수 있습니다.
"원시" 기호와 같은 다른 기호가 표시됩니다.r
백슬래시를 해석하지 않도록 문자열을 지정합니다.이것은 정규 표현식을 작성하는 데 매우 유용합니다.
>>> 'foo\"'
'foo"'
>>> r'foo\"'
'foo\\"'
유니코드 문자열과 비 유니코드 문자열은 Python 2에서 같을 수 있습니다.
>>> 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
이것은 기능이지 버그가 아닙니다.
자세한 내용은 http://docs.python.org/howto/unicode.html, 의 '문서 유형' 섹션을 참조하십시오.
언급URL : https://stackoverflow.com/questions/11279331/what-does-the-u-symbol-mean-in-front-of-string-values
'IT' 카테고리의 다른 글
MySQL에 대한 SQL LEFT-JOIN 2개 필드 (0) | 2023.09.05 |
---|---|
Python 스크립트를 사용하여 가상 환경 활성화 (0) | 2023.09.05 |
제로 길이 비트 필드의 실용적인 사용 (0) | 2023.09.05 |
npm 구성을 기본값으로 복원/재설정하는 방법은 무엇입니까? (0) | 2023.09.05 |
마리아를 사용하여 카트 1.5.6.4 열기DB (0) | 2023.09.05 |