Python可以很容易地填充和对齐ascii字符串,如下所示:
>>> print "%20s and stuff" % ("test")
test and stuff
>>> print "{:>20} and stuff".format("test")
test and stuff
Run Code Online (Sandbox Code Playgroud)
但是,如何正确填充和对齐包含特殊字符的unicode字符串?我尝试了几种方法,但它们似乎都没有用:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def manual(data):
for s in data:
size = len(s)
print ' ' * (20 - size) + s + " stuff"
def with_format(data):
for s in data:
print " {:>20} stuff".format(s)
def with_oldstyle(data):
for s in data:
print "%20s stuff" % (s)
if __name__ == "__main__":
data = ("xTest1x", "?Test?", "?? Test ??", …Run Code Online (Sandbox Code Playgroud) 我想使用 Django 根据其当前值将字段更新为不同的值,但我不知道如何在不执行 2 个单独的更新语句的情况下执行此操作。
这是我想做的一个例子:
now = timezone.now()
data = MyData.objects.get(pk=dataID)
if data.targetTime < now:
data.targetTime = now + timedelta(days=XX)
else:
data.targetTime = data.targetTime + timedelta(days=XX)
data.save()
Run Code Online (Sandbox Code Playgroud)
现在,我想使用 update() 语句来避免覆盖数据上的其他字段,但我不知道如何在单个 update() 中执行此操作。我尝试了一些这样的代码,但第二次更新没有使用最新时间(我最终得到了一个等于当前时间的字段):
# Update the time to the current time
now = timezone.now()
MyData.objects.filter(pk=dataID).filter(targetTime__lt=now).update(targetTime=now)
# Then add the additional time
MyData.objects.filter(pk=dataID).update(targetTime=F('targetTime') + timedelta(days=XX))
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将其简化为单个 update() 语句?类似于 SQL CASE 语句的东西?
我想的对象的转换过载到一个字符串,所以,以下的例子将输出字符串"TEST",而不是"[对象的对象]".我该怎么做呢?
function TestObj()
{
this.sValue = "TEST";
}
function Test()
{
var x = new TestObj();
document.write(x);
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个生成器表达式,它构建了一个超过源键的字典,如下所示:
def moreIter(names):
for name in names:
yield name
yield name + "Bar"
KEYS = ("a", "b")
src = {"a": 1, "aBar": 2, "b": 3, "bBar": 4, "c": 0, "cBar": 1, "d": 10}
d = {key: src[key] for key in moreIter(KEYS)}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更"pythonic"的方法来做这样的事情.似乎我遇到的所有标准库函数迭代遍历列表将返回与原始列表相等或更小的长度,但在这种情况下,我想迭代扩展的结果.
此代码在GNU编译器中产生错误:
class A
{
public:
int X;
};
template<class T>
class Foo : public T
{
public:
void doStuff();
};
template<class T>
void Foo<T>::doStuff()
{
X++;
}
Run Code Online (Sandbox Code Playgroud)
已经有一个答案为什么这是一个错误.我想知道是否有另一种解决此错误的方法而不是使用
T::X
Run Code Online (Sandbox Code Playgroud)
每次我想引用X成员.我试过这个:
template<class T>
void Foo<T>::doStuff()
{
using T::X;
X++;
}
Run Code Online (Sandbox Code Playgroud)
但是GCC给出了一个错误:"不允许使用类限定名称"
python ×2
c++ ×1
django ×1
gcc ×1
inheritance ×1
javascript ×1
object ×1
string ×1
templates ×1
unicode ×1