私信  •  关注

Amadan

Amadan 最近创建的主题
Amadan 最近回复了

cursor.fetchone() 以元组形式返回一行中的所有选定字段。例如,如果你做了 SELECT first, last ... ,你会得到一个2元组 ("John", "Smith") .

您只请求了一个字段,所以得到了1元组 ("John",) :你没有字符串 "John" ! 改为:

name = cursor.fetchone()[0]

编辑:或者,正如文森特在下面警告的那样,更加有力:

row = cursor.fetchone()
name = row[0] if row else None

看见 How to create a tuple with only one element 讨论1元组,以及为什么有逗号。

2 年前
回复了 Amadan 创建的主题 » 这个Python代码中的错误是什么

这是一个普通字符串,它有转义机制,在某些字符前加上反斜杠,为它们创建特殊的含义(例如。 \n , \u791c ...) 或者剥夺它们的特殊意义( \" , \\ ...). 然而,序列 \d 未定义,以及 "\d" 相当于 "d" .

(因此,您的代码将只匹配由字母的任意重复次数组成的字符串。) d 没有别的,比如 “d” , "dd" "dddddddd" ,这大概不是你想要的——这就是为什么编辑警告你那里可能有什么气味。)

这对于正则表达式来说相当不方便,因为正则表达式也使用反斜杠进行转义,所以每个反斜杠都必须另外转义。生成包含 \d ,必须将反斜杠加倍,以便反斜杠保留下来,以便包含在字符串中: \\d .如果你真的想在正则表达式中匹配反斜杠,你必须在正则表达式中转义它,但你也需要在字符串文本中转义它,这会导致一个看起来很可笑的结果 "\\\\" .

为此,Python有“原始字符串”,反斜杠转义不起作用——反斜杠就是反斜杠。要制作原始字符串,只需预加 r .

因此,你应该写下以下其中一个:

"^\\d+$"
r"^\d+$"
5 年前
回复了 Amadan 创建的主题 » 如果DEBUG=False,为什么Django不加载静态文件?

在调试模式下,Django将提供所有服务,这样您就不必为Apache/Nginx之类的东西操心了。

在生产模式下,使用Python提供静态内容是浪费资源,Django假设您将设置一个web服务器来提供静态内容。见:

尤其是

你很有可能被淘汰了。 9.8556435e-01 (也称为 0.98556435 )意味着该分类器认为其有98.556435%的中毒概率。 1.0463297e-03 (也称为 0.0010463297 意味着只有0.10463297%的可能性是有毒的。您可以设置50%作为断点,并按如下方式执行:

toxic = toxic_prob >= 0.5
5 年前
回复了 Amadan 创建的主题 » 为什么python中的round()函数会给出不同的结果?

docs :

如果两个倍数相等,则向偶数选择进行舍入(例如,round(0.5)和round(-0.5)均为0,round(1.5)均为2)。

也就是说,python 3可以 "rounding half to even" .

你可以这样做“围捕”:

import math
def round_up(x):
    return math.floor(x + 0.5)
4 年前
回复了 Amadan 创建的主题 » 如何将python代码转换成Java

x[::-1] 在python中,意思是“序列的所有元素” x 从最后一个开始,以第一个结束)。 range(y) 从中生成所有数字 0 y - 1 . 因此,您的行将生成从最后一个索引开始的索引 script_lines 到0。

不过,这不是一个很好的python代码——它创建了一个不需要的列表。使用 __len__ 这种方法也不受欢迎,因为它是一种给排水的方法;而是使用瓷器。 len 功能。一个更好的写作方法应该是

for i in range(len(script_lines) - 1, -1, -1):

(开始于 length - 1 ,到达前停止 -1 添加时 - 1 每次迭代。)但从 i 实际上在提取之后从未提及 temp_line 重写得更好

for temp_line in reversed(script_lines):

Java没有任何类似的东西 reversed ,因此您必须对索引使用循环:

for (int i = scriptLines.size() - 1; i >= 0; i--) {
5 年前
回复了 Amadan 创建的主题 » 理解Git Diff

Unix将一行定义为“以行结束符结尾的字符串”。因此,几乎所有基于Unix的编辑器都有这样的行:

1\n
2\n
3\n

在哪里? \n 表示lf字符,表示行尾。如果您在这里添加第四行,它实际上只是一个新行。

Windows不共享此定义,许多基于Windows的编辑器考虑CR+LF组合(如下所示 \r\n )作为线条 分离器 ,不是线条 终结者 . AS git 注意到“文件末尾没有换行符”,您的文件是

1\r\n
2\r\n
3

当你添加另一行时,你

1\r\n
2\r\n
3\r\n
4

所以从 吉特 以Unix为中心的观点,您通过附加 \rn 对它。

现在去误会一下 diff 输出格式:默认为, 微分 正在为您提供“统一”格式,并在更改周围提供一些上下文。这些变化只是 + - 前缀:删除了原来的第3行,插入了新的第3行和第4行。符号 @@ -1,3 +1,4 @@ 下面的代码片段描述了旧文件的第1-3行和新文件的第1-4行。通常,统一的diff输出默认也会在每次更改前后为您提供两行上下文,以帮助人类准确理解更改的内容。( -U2 )如果不需要上下文,可以使用 -U0 .