考虑下一个例子:
>>> s = u"????"
>>> s
u'\xe1\xe0\xe1\xe0'
>>> print s
áàáà
Run Code Online (Sandbox Code Playgroud)
我cp1251在空闲时使用编码,但似乎解释器实际上用于latin1创建unicode字符串:
>>> print s.encode('latin1')
????
Run Code Online (Sandbox Code Playgroud)
为什么这样?这种行为有规格吗?
CPython,2.7.
编辑
我实际上寻找的代码是
>>> u'\xe1\xe0\xe1\xe0' == u'\u00e1\u00e0\u00e1\u00e0'
True
Run Code Online (Sandbox Code Playgroud)
似乎在使用latin1编解码器对unicode进行编码时,所有unicode点都少于256,因此只会产生我之前输入的字节.
例如:
list1=['k1','k2','k3',['k4','k5',['k6','k7']]]
list2=['v1','v2','v3',['v4','v5',['v6','v7']]]
Run Code Online (Sandbox Code Playgroud)
我想将它们合并到这样的字典中:
dict1={'k1':'v1','k2':'v2','k3':'v3','k4':'v4','k5':'v5','k6':'v6','k7':'v7'}
Run Code Online (Sandbox Code Playgroud)
我有办法做到这一点,但我认为这需要太多时间:
def mergeToDict(keyList, valueList):
resultDict = {}
for key, value in itertools.izip(keyList, valueList):
if type(key) == list and type(value) == list:
resultDict=dict(resultDict,**mergeToDict(key, value))
elif type(key) != list and type(key) != dict and type(key) != tuple:
resultDict[key] = value
return resultDict
Run Code Online (Sandbox Code Playgroud)
有没有更好的想法?
我正在尝试加密sha1中的字符串,我从服务器收到错误:
"No Module Named hashlib"
Run Code Online (Sandbox Code Playgroud)
通过使用以下代码:
import hashlib
encrypted = hashlib.sha1(string)
encrypted = encrypted.digest()
Run Code Online (Sandbox Code Playgroud)
我会感激任何帮助,
谢谢,盖伊多尔
陈述之间是否有任何区别
ALTER TABLE xxx DEFAULT CHARACTER SET utf8
和
ALTER TABLE xxx CHARACTER SET utf8 ?
MySQL文档对DEFAULT关键字的功能保持沉默.
from bs4 import BeautifulSoup
import urllib
import re
soup = urllib.urlopen("http://atlanta.craigslist.org/cto/")
soup = BeautifulSoup(soup)
souped = soup.p
print souped
m = re.search("\\$.",souped)
print m.group(0)
Run Code Online (Sandbox Code Playgroud)
我可以下载并打印好html,但是当我添加最后两行时它总是会中断.
我收到此错误:
Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 323, in RunScript
debugger.run(codeObject, __main__.__dict__, start_stepping=0)
File "C:\Python27\Lib\site-packages\pythonwin\pywin\debugger\__init__.py", line 60, in run
_GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
File "C:\Python27\Lib\site-packages\pythonwin\pywin\debugger\debugger.py", line 655, in run
exec cmd in globals, locals
File "C:\Users\Zack\Documents\Scripto.py", line 1, in <module>
from bs4 import BeautifulSoup
File "C:\Python27\lib\re.py", line 142, in search
return _compile(pattern, flags).search(string)
TypeError: …Run Code Online (Sandbox Code Playgroud) 你能描述两种字符串连接方式之间的区别:简单的__add__运算符和%s模式吗?我在这个问题上进行了一些调查,发现%s(没有使用括号的形式)更快一点.
还出现了另一个问题:为什么结果'hell%s' % 'o'指的是另一个记忆区域'hell%s' % ('o',)?
有一些代码示例:
l = ['hello', 'hell' + 'o', 'hell%s' % 'o', 'hell%s' % ('o',)]
print [id(s) for s in l]
Run Code Online (Sandbox Code Playgroud)
结果:
[34375618400, 34375618400, 34375618400, 34375626256]
Run Code Online (Sandbox Code Playgroud)
PS我知道字符串实习:)
我想绘制一个20亿对象的数组,我有8GB的RAM,当我运行以下行时仍然会出现以下错误:
import matplotlib.pyplot as plt
import numpy as np
d = np.arange(200000000)
plt.plot(d)
plt.show()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
...
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 317, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 292, in _plot_args
x = np.arange(y.shape[0], dtype=float)
MemoryError
Run Code Online (Sandbox Code Playgroud) 这不是第一次发生在我身上,所以现在我正在寻找答案,因为我完全难过了.
我现在已经在生产环境中运行了3个多月的代码并且它工作得非常好,然后我开始在python中出现错误.
'method_descriptor' object has no attribute 'today'
Exception Value:
'method_descriptor' object has no attribute 'today'
Exception Location: /admin/views/create.py in process, line 114
/admin/views/create.py in process
order = Orders(uid=0, accepted=0, canview='', files=0, date=datetime.date.today(), due=dueDate,
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在使用以下内容,它在python shell中运行得非常好:
>>> import datetime
>>> datetime.date.today()
>>> datetime.date(2011, 9, 27)
Run Code Online (Sandbox Code Playgroud) 所以我确定这是一个愚蠢的问题,但我查看了Python的文档并尝试了几个Google代码,但没有一个有效.
似乎以下应该工作,但它返回"False"为我的目录/ foo/bar我有3项:1文件夹"[文件夹]",1文件"测试"(没有扩展名),和1文件"测试py"为.
我希望有一个脚本可以区分文件夹和一堆函数的文件,但我无法找出任何有用的东西.
#!/usr/bin/python
import os, re
for f in os.listdir('/foo/bar'):
print f, os.path.isdir(f)
Run Code Online (Sandbox Code Playgroud)
目前为所有内容返回false.
给出以下字典和集:
d = {1 : a, 2 : b, 3 : c, 4 : d, 5 : e }
s = set([1, 4])
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以删除集合中未包含的所有字典条目(即2,3,5).我知道我可以通过遍历字典并检查每个密钥来实现这一点,但由于我是Python的新手并且遇到了许多"快捷方式",到目前为止,我想知道是否存在针对此特定问题的问题.
python ×9
alter-table ×1
compilation ×1
datetime ×1
dictionary ×1
encoding ×1
encryption ×1
hash ×1
hashlib ×1
internals ×1
list ×1
matplotlib ×1
mysql ×1
numpy ×1
python-2.7 ×1
regex ×1
sha1 ×1
unicode ×1