小编Rom*_*huk的帖子

用于u""文字的编码

考虑下一个例子:

>>> 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,因此只会产生我之前输入的字节.

python unicode encoding

6
推荐指数
1
解决办法
448
查看次数

将两个嵌套列表压缩到单个级别字典的最有效方法是什么

例如:

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)

有没有更好的想法?

python dictionary list

6
推荐指数
2
解决办法
522
查看次数

无法导入"hashlib"

我正在尝试加密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)

我会感激任何帮助,

谢谢,盖伊多尔

python encryption hash sha1 hashlib

5
推荐指数
1
解决办法
7517
查看次数

'字符集'和'默认字符集'之间的区别

陈述之间是否有任何区别

ALTER TABLE xxx DEFAULT CHARACTER SET utf8

和

ALTER TABLE xxx CHARACTER SET utf8 ?

MySQL文档对DEFAULT关键字的功能保持沉默.

mysql alter-table character-encoding

4
推荐指数
1
解决办法
192
查看次数

为什么Python正则表达式不能用于格式化的HTML字符串?

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)

python regex

4
推荐指数
1
解决办法
3857
查看次数

Python中的字符串连接

你能描述两种字符串连接方式之间的区别:简单的__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我知道字符串实习:)

python compilation internals object-identity

3
推荐指数
1
解决办法
327
查看次数

尝试使用matplotlib绘制大型数组时出现内存错误

我想绘制一个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)

python numpy matplotlib

3
推荐指数
2
解决办法
8653
查看次数

Python日期时间随机破坏

这不是第一次发生在我身上,所以现在我正在寻找答案,因为我完全难过了.

我现在已经在生产环境中运行了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 datetime

3
推荐指数
1
解决办法
2090
查看次数

区分文件和目录

所以我确定这是一个愚蠢的问题,但我查看了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.

python

3
推荐指数
1
解决办法
1413
查看次数

删除不在集合中的字典条目

给出以下字典和集:

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 python-2.7

2
推荐指数
1
解决办法
1259
查看次数