假设如下:
\n>>> square = '\xc2\xb2' # Superscript Two (Unicode U+00B2)\n>>> cube = '\xc2\xb3' # Superscript Three (Unicode U+00B3)\nRun Code Online (Sandbox Code Playgroud)\n奇怪的是:
\n>>> square.isdigit()\nTrue\n>>> cube.isdigit()\nTrue\nRun Code Online (Sandbox Code Playgroud)\n好的,让我们将这些“数字”转换为整数:
\n>>> int(square)\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nValueError: invalid literal for int() with base 10: '\xc2\xb2'\n>>> int(cube)\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nValueError: invalid literal for int() with base 10: '\xc2\xb3'\nRun Code Online (Sandbox Code Playgroud)\n哎呀!
\n有人可以解释一下我应该期待什么行为吗str.isdigit()在处理字符串时我应该从该方法中得到什么行为吗?
请考虑以下表结构:
CREATE TABLE tb_log
(
id INTEGER PRIMARY KEY,
moment DATE,
old INTEGER,
actual INTEGER
);
Run Code Online (Sandbox Code Playgroud)
包含数据:
INSERT INTO
tb_log ( id, moment, old, actual )
VALUES
( 1, '2018-06-19', 10, 20 ),
( 2, '2018-06-21', 20, 30 ),
( 3, '2018-06-25', 30, 40 );
Run Code Online (Sandbox Code Playgroud)
我试图从tb_log一个值生效的期间(开始日期和结束日期)开始.
试验#1 - 使用lag()功能:
SELECT
lag( moment ) OVER (ORDER BY moment) date_start,
moment AS date_end,
old AS period_value
FROM
tb_log;
Run Code Online (Sandbox Code Playgroud)
返回以下数据:
| date_start | date_end | period_value |
|------------|------------|--------------|
| …Run Code Online (Sandbox Code Playgroud) 仅出于教育目的,我正在尝试实现copy.deepcopy().
在玩了一些有趣的代码和谷歌搜索之后,我想出了以下功能:
def my_deepcopy(data):
if isinstance(data, dict):
result = {}
for key, value in data.items():
result[key] = my_deepcopy(value)
assert id(result) != id(data)
elif isinstance(data, list):
result = []
for item in data:
result.append(my_deepcopy(item))
assert id(result) != id(data)
elif isinstance(data, tuple):
aux = []
for item in data:
aux.append(my_deepcopy(item))
result = tuple(aux)
assert id(result) != id(data)
elif isinstance(data, (int, float, type(None), str, bool)):
result = data
else:
raise ValueError("unexpected type")
return result
Run Code Online (Sandbox Code Playgroud)
它似乎适用于所有 Python 原始类型及其组合:
# Various …Run Code Online (Sandbox Code Playgroud) 需要一个函数来转义包含 awk 脚本中的正则表达式运算符的字符串。
我遇到了这个“丑陋”的解决方案:
function escape_string( str )
{
gsub( /\\/, "\\\\", str );
gsub( /\./, "\\.", str );
gsub( /\^/, "\\^", str );
gsub( /\$/, "\\$", str );
gsub( /\*/, "\\*", str );
gsub( /\+/, "\\+", str );
gsub( /\?/, "\\?", str );
gsub( /\(/, "\\(", str );
gsub( /\)/, "\\)", str );
gsub( /\[/, "\\[", str );
gsub( /\]/, "\\]", str );
gsub( /\{/, "\\{", str );
gsub( /\}/, "\\}", str );
gsub( /\|/, "\\|", str );
return …Run Code Online (Sandbox Code Playgroud)