使用Python 2.7,我想知道使用类型unicode而不是str因为它们两者似乎能够保存Unicode字符串的真正优势.除了能够unicode使用转义字符串在字符串中设置Unicode代码之外,还有什么特殊原因\吗?:
执行模块:
# -*- coding: utf-8 -*-
a = 'á'
ua = u'á'
print a, ua
Run Code Online (Sandbox Code Playgroud)
结果:á,á
编辑:
使用Python shell进行更多测试:
>>> a = 'á'
>>> a
'\xc3\xa1'
>>> ua = u'á'
>>> ua
u'\xe1'
>>> ua.encode('utf8')
'\xc3\xa1'
>>> ua.encode('latin1')
'\xe1'
>>> ua
u'\xe1'
Run Code Online (Sandbox Code Playgroud)
因此,unicode字符串似乎使用latin1而不是编码utf-8,原始字符串使用utf-8?我现在更加困惑了!:S
我正在尝试使用JDK 1.6在Android 2.3.1中使用库DigestUtils,但是在执行应用程序时出现以下错误:
Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
在这里你有堆栈跟踪:
02-03 10:25:45.153: I/dalvikvm(1230): Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
02-03 10:25:45.153: W/dalvikvm(1230): VFY: unable to resolve static method 329: Lorg/apache/commons/codec/binary/Hex;.encodeHexString ([B)Ljava/lang/String;
02-03 10:25:45.153: D/dalvikvm(1230): VFY: replacing opcode 0x71 at 0x0004
02-03 10:25:45.153: D/dalvikvm(1230): VFY: dead code 0x0007-0008 in Lorg/apache/commons/codec/digest/DigestUtils;.shaHex ([B)Ljava/lang/String;
02-03 10:25:45.163: D/AndroidRuntime(1230): Shutting down VM
02-03 10:25:45.163: W/dalvikvm(1230): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-03 10:25:45.173: E/AndroidRuntime(1230): FATAL EXCEPTION: main …Run Code Online (Sandbox Code Playgroud) 我总是在课程定义后留下一个空行,代码似乎符合PEP8,因为没有提出警告.我之所以这样做是因为我发现它比一起编写更具可读性.
class Area(BaseModel):
name = models.CharField(_("Name"), max_length=30)
slug = models.SlugField(_("Slug"), max_length=30, unique=True)
class Meta(BaseModel.Meta):
verbose_name = _("Area")
verbose_name_plural = _("Areas")
ordering = [
"name",
]
Run Code Online (Sandbox Code Playgroud)
但是,当我读PEP8代码兼容时.这个额外的空间永远不存在,这段代码看起来像这样:
class Area(BaseModel):
name = models.CharField(_("Name"), max_length=30)
slug = models.SlugField(_("Slug"), max_length=30, unique=True)
class Meta(BaseModel.Meta):
verbose_name = _("Area")
verbose_name_plural = _("Areas")
ordering = [
"name",
]
Run Code Online (Sandbox Code Playgroud)
我的问题是:这是一个"糟糕的做法",我正在做什么.我应该在Python中避免这些额外的空白行吗?
我想在Django中追加或链接几个Queryset,保留每个Queryset的顺序(不是结果).我正在使用第三方库对结果进行分页,它只接受列表或查询集.我试过这些选项:
Queryset join:不保留单个查询集中的排序,因此我不能使用它.
result = queryset_1 | queryset_2
Run Code Online (Sandbox Code Playgroud)
使用itertools:调用list()链对象实际上会评估查询集,这可能会导致很多开销.不是吗?
result = list(itertools.chain(queryset_1, queryset_2))
Run Code Online (Sandbox Code Playgroud)
你觉得我该怎么办?
我正在使用django-ckeditor,我对链接和图像有一些问题.
关于链接:

在此界面中,您可以看到最终用户无法使用它,因为它太复杂并且可能导致错误和安全问题,因为该按钮Browse Server确实允许用户浏览上载的内容.我想要的是非常简单的东西:只是一个输入文本,它自动附加http(如果没有用户输入),并在新窗口中打开链接,即目标_blank.
我试过用以下代码编辑config.js.这已删除了Upload和Advanced选项卡,从Info选项卡中删除了不必要的小部件并_blank默认设置了目标.但是Target选项卡仍然存在,用户可以更改它,因为我显然无法删除此选项卡,否则默认目标被忽略我坚持这一点.那么,我如何设置目标_blank并删除Target选项卡呢?有没有办法隐藏此选项卡,但不能删除它?
CKEDITOR.on('dialogDefinition', function(ev) {
// Take the dialog name and its definition from the event data.
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
// Check if the definition is from the dialog we're
// interested in (the 'link' dialog).
if (dialogName == 'link') {
// Remove the 'Target', 'Upload' and 'Advanced' tabs from the 'Link' …Run Code Online (Sandbox Code Playgroud) 我知道从一个数字开始命名一个Python模块是一个坏主意,正如另一个问题所述,但我想知道在Python包中是否合法,而不是模块(aka文件).
例如.我想一个Django网站与一些外部API的整合,我想创建一个"第三者"包,包含文件对每个供应商,我不知道,如果调用它3rd_party会成为一个头痛或我应该命名third_party相反,避免问题.
注意:我不知道它是否重要,但我使用的是Python 2.7
我Eclipse Juno在Ubuntu x64机器上使用.
我想改变PyDevPEP8 的默认最大线路长度,但我不能!
我转到Window/Preferences/PyDev/Editor/Code Analysis/pep8.py并设置以下参数:
--max-line-length=100
Run Code Online (Sandbox Code Playgroud)
我做错了什么?设置完成后,我已经完成了代码分析,但是行长似乎被忽略了,我不想这样做.
如果我从apt-get我获得版本3.0b2-1 安装主管,如果我运行sudo service supervisor status我得到is running(较旧的测试版工作正常)
目录在/etc/supervisor与创建supervisord.conf文件内部和空目录conf.d
但是,尝试使用pip或easy_install安装最新版本(3.1.1)并运行service supervisor status我得到supervisor: unrecognized service(最新版本无效)
没有创建配置文件,/etc所以我echo_supervisord_conf > /etc/supervisord.conf在docs上说过.
我无法运行服务启动/停止/重启/状态......我不知道主管是否真的会工作.这里有什么想法?
注意:我使用的是Ubuntu 14.04 x64机器.
我需要使用AJAX与已经过身份验证的用户使用Django进行HTTP调用.
有没有标准的简单方法来做到这一点?我已经阅读了其他问题,但使用了不同的技术.
我正在使用HTTP(不是HTTPS)并使用像django-tastypie这样的第三方应用程序来实现这种独特的"简单"目的,这样做会有些过分,不是吗?
我正在建立一个有两个分支的(Django)网站:master和dev.
master是生产版本,不应该直接在这里完成任何工作.dev一旦被认为是稳定的,所有的变化应该来自合并分支.
dev正如您可能猜到的那样,是开发分支,所有更改都在这里(和子分支)进行.
在服务器中我有两个工作的网站,生产一个(使用master分支)和另一个私有开发,dev子域使用dev分支.
问题是所有配置文件,静态文件(图像等)都在控件版本内,以便能够轻松地将它们推送到服务器.但是,如果这些文件(静态,配置...)被修改dev为只在服务器中调试然后我需要与主服务器合并... 我怎样才能设置一些文件和目录在合并开发时被忽略主?
我一直在寻找,我已经发现了一些相关的问题,但他们告诉你使用.gitattributes带merge=ours.但是,这种方法有一个很大的警告:只有在两个分支中修改文件时才应用策略,但这不是我的情况.
关于我该怎么做的任何提示?