我试图将包含非ascii字符的传入字节字符串转换为有效的utf-8字符串,以便我可以转储为json.
b = '\x80'
u8 = b.encode('utf-8')
j = json.dumps(u8)
Run Code Online (Sandbox Code Playgroud)
我希望j为'\ xc2\x80',但我得到:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,'b'来自mysql通过谷歌协议缓冲区,并填写了一些blob数据.
有任何想法吗?
编辑:我有一个以太网帧作为blob存储在mysql表中(请大家,请保持主题,不要讨论为什么表中有数据包).表格排序是utf-8,db层(sqlalchemy,non-orm)正在抓取数据并创建结构(谷歌协议缓冲区),它将blob存储为python"str".在某些情况下,我直接使用协议缓冲区,没有任何问题.在其他情况下,我需要通过json公开相同的数据.我注意到的是,当json.dumps()做了它的事情,'\ x80'可以用无效的unicode char替换(\ ufffd iirc)
我目前正在使用Selenium Webdriver在页面上进行一些验证.Webdriver由PhantomJS驱动.我知道在PhantomJS中,您可以使用如下示例来收听网络:(来自https://github.com/ariya/phantomjs/wiki/Network-Monitoring).
var page = require('webpage').create();
page.onResourceRequested = function (request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);
Run Code Online (Sandbox Code Playgroud)
如何在Webdriver中实现此功能?我可以将函数绑定到DesiredCapabilities吗?
我有一个模型,Director有两个DateFields和两个子类(下面的代码).我正在尝试为每个Director创建一个管理页面,它显示相应的子类实例,而不是Director实例; 这部分大部分都很简单(我为每个子类创建一个内联,给主模型管理器一个表格,所有字段都被排除在外,并且主要的ModelAdmin请求来自内联的请求表单集,这些表单集有相应的实例 - 代码;有一个未解决的问题用这种方法,我在下面注意到,但不是这个问题的焦点).
我遇到的问题是我想按下显示给用户的值,其中一个显示在只读字段中,其中一个不显示.处理是我想将魔术值(date(1,1,1))更改为字符串"On incorporation".
readonly字段中的日期不会以非常友好的格式呈现,我希望减少对javascript的不必要依赖,所以我更喜欢服务器端解决方案.
下面的代码显示了我想要的表单,除了日期值根本没有按摩,保存时,即使没有错误,也有一个虚假的"请更正下面的错误"消息,并保存所有字段正确.
我的问题是:我如何拦截要在页面上呈现的值,包括只读字段和表单字段,并更改它们以显示我选择的字符串?
模型(到目前为止):
class Director(models.Model, Specializable):
date_of_appointment = models.DateField()
date_ceased_to_act = models.DateField(blank=True,null=True)
class DirectorsIndividual(Director):
pass
class DirectorsCorporate(Director):
pass
Run Code Online (Sandbox Code Playgroud)
管理员代码:
class DirectorAdmin(EnhancedAdmin):
fields = ()
## def formfield_for_dbfield(self, db_field, **kwargs):
## return None
def queryset(self, request):
""" Directors for all companies which are incorporated by the current user's organisation """
individual = Individual.for_user(request.user)
return Director.objects.filter(company__incorporation_ticket__ordered_by__in = Organisation.all_organisations_for_which_individual_authorised_to_incorporate(individual))
class form(forms.ModelForm):
# have this return no html - …Run Code Online (Sandbox Code Playgroud) 我有一些谓词,例如:
is_divisible_by_13 = lambda i: i % 13 == 0
is_palindrome = lambda x: str(x) == str(x)[::-1]
Run Code Online (Sandbox Code Playgroud)
并希望在逻辑上将它们组合在一起,如:
filter(lambda x: is_divisible_by_13(x) and is_palindrome(x), range(1000,10000))
Run Code Online (Sandbox Code Playgroud)
现在的问题是:这种组合可以用无点样式编写,例如:
filter(is_divisible_by_13 and is_palindrome, range(1000,10000))
Run Code Online (Sandbox Code Playgroud)
这当然不具有期望的效果,因为λ函数的真值是True和and并且or是短路运算符.我想出的最接近的事情是定义一个类P,它是一个简单的谓词容器,它实现__call__()并拥有方法and_()并or_()组合谓词.定义P如下:
import copy
class P(object):
def __init__(self, predicate):
self.pred = predicate
def __call__(self, obj):
return self.pred(obj)
def __copy_pred(self):
return copy.copy(self.pred)
def and_(self, predicate):
pred = self.__copy_pred()
self.pred = lambda x: pred(x) and predicate(x) …Run Code Online (Sandbox Code Playgroud) 我已经使用从web服务检索的unicode字符串requests模块,它包含一个二进制文件的字节(PCL,因为它发生).其中一个字节的值为248,尝试对其进行base64编码会导致以下错误:
In [68]: base64.b64encode(response_dict['content']+'\n')
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
C:\...\<ipython-input-68-8c1f1913eb52> in <module>()
----> 1 base64.b64encode(response_dict['content']+'\n')
C:\Python27\Lib\base64.pyc in b64encode(s, altchars)
51 """
52 # Strip off the trailing newline
---> 53 encoded = binascii.b2a_base64(s)[:-1]
54 if altchars is not None:
55 return _translate(encoded, {'+': altchars[0], '/': altchars[1]})
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf8' in position 272: ordinal not in range(128)
In [69]: response_dict['content'].encode('base64')
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
C:\...\<ipython-input-69-7fd349f35f04> in <module>() …Run Code Online (Sandbox Code Playgroud) python base64 character-encoding unicode-string python-unicode
我已经看过这个话题了几次,但我认为我没有看到任何确定的解决方案.
我已经尝试了将所有我的Foo.deploy.js,Bar.deploy.js组合成单个.js文件的路由,然后将其包含在loadAmber()调用中.这/似乎/工作得相当好,但大部分下载大小仍然来自Amber内部.
在我的申请中,规模最大的罪犯是:
我不能对jQuery UI的大小做太多,但我可以做很多关于Amber核心的大小,以及获取它们所需的HTTP请求的数量.唯一的问题是我无法弄清楚如何告诉Amber不要自动获取Kernel-Objects.deploy.js等.
有没有人设法将他们的整个Amber javascript成功打包成一个.js文件?
代码:http://github.com/rtyler Chatter:http://twitter.com/agentdero
我正在为C(这里)实现一组常见但又不那么简单(或容易出错)的数据结构,并且只是提出了让我思考的想法.
简而言之,问题是,实现两个使用类似算法但具有不同接口的结构的最佳方法是什么,而无需复制粘贴/重写算法?最好的,我的意思是最可维护和可调试.
我认为很明显为什么你不想要同一算法的两个副本.
假设你有一组结构(称之为map),带有一组相关的函数(map_*()).由于地图需要将任何东西映射到任何东西,我们通常会使用a void *key和void *data.然而,认为地图上的int到int.在这种情况下,您需要将所有密钥和数据存储在另一个阵列中并将其地址提供给map,这不太方便.
现在想象一下,如果有一个类似的结构(称之为mapc,C为"副本")期间初始化需要sizeof(your_key_type)和sizeof(your_data_type)并给予void *key与void *data上插入,它将使用memcpy的密钥和数据复制在地图上,而不是仅仅维持指针.用法示例:
int i;
mapc m;
mapc_init(&m, sizeof(int), sizeof(int));
for (i = 0; i < n; ++i)
{
int j = rand(); /* whatever */
mapc_insert(&m, &i, &j);
}
Run Code Online (Sandbox Code Playgroud)
这是非常好的,因为我不需要保留另一个is和js 数组.
在上面的例子,map并mapc有非常密切的关系.如果你想想看,map和 …
当我取-1的平方根时,它给出了一个错误:
sqrt中遇到无效值
我该如何解决这个问题?
/////////
arr=sqrt(-1)
print(arr)
OUTPUT
Run Code Online (Sandbox Code Playgroud) 如果我想获取当前模块,例如重新加载它,我会这样做:
import sys
sys.modules[__name__]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点(例如不涉及__name__)?在这种情况下,更好意味着更惯用、更便携、更健壮,或者更多......我们通常在软件中希望的任何其他东西。
我使用 python 2,但 python 3 的答案无疑对其他人有用。
python ×6
javascript ×2
base64 ×1
c ×1
deployment ×1
django ×1
django-admin ×1
django-forms ×1
interface ×1
json ×1
numpy ×1
oop ×1
phantomjs ×1
pointfree ×1
predicate ×1
prototype ×1
python-2.7 ×1
selenium ×1
smalltalk ×1
unicode ×1
utf-8 ×1
webdriver ×1