小编Ant*_*ala的帖子

为什么json.dumps使用"\ uxxxx"转义非ascii字符

在Python 2中,该函数json.dumps()将确保将所有非ascii字符转义为\uxxxx.

Python 2 Json

但这不是很混乱,因为它\uxxxx是一个unicode字符,应该在unicode字符串中使用.

输出json.dumps()是a str,它是Python 2中的字节字符串.因此它不应该将字符转义为\xhh?

>>> unicode_string = u"\u00f8"
>>> print unicode_string
ø
>>> print json.dumps(unicode_string)
"\u00f8"
>>> unicode_string.encode("utf8")
'\xc3\xb8'
Run Code Online (Sandbox Code Playgroud)

python unicode json python-2.x

3
推荐指数
1
解决办法
5193
查看次数

使用python请求将0字节文件上传到owncloud会挂起

我正在尝试上传一个0字节的文件,其中包含对owncloud的请求.我想为此使用类似文件的对象.通常我会这样做:

file_obj = io.BytesIO(b'')
response = requests.put('http://localhost/remote.php/webdav',
                                    auth=('xxx', 'xxx'),
                                    data=file_obj)
Run Code Online (Sandbox Code Playgroud)

但它冻结了.如果我中断进程,我会看到它与堆栈跟踪挂起的位置:

Traceback (most recent call last):
  File "/home/julian/cc/client/.venv/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 376, in _make_request
    httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/julian/cc/client/cc/storage/webdav.py", line 360, in <module>
    main()
  File "/home/julian/cc/client/cc/storage/webdav.py", line 351, in main
    data=file_obj)
  File "/home/julian/cc/client/.venv/lib/python3.5/site-packages/requests/api.py", line 120, in put
    return request('put', url, data=data, **kwargs)
  File "/home/julian/cc/client/.venv/lib/python3.5/site-packages/requests/api.py", line 53, in request
    return session.request(method=method, …
Run Code Online (Sandbox Code Playgroud)

python webdav transfer-encoding python-requests owncloud

3
推荐指数
1
解决办法
742
查看次数

如何在sqlalchemy中使用psycopg2.extras?

我想将大量条目(〜600k)上传到PostgreSQL DB的一个简单表中,每个条目有一个外键,一个时间戳和3个浮点数。但是,每个条目要花费60毫秒才能执行此处所述的核心批量插入操作,因此整个执行过程将花费10个小时。我发现,这是executemany()方法的性能问题,但是已经用psycopg2 2.7中的execute_values()方法解决了。

我运行的代码如下:

#build a huge list of dicts, one dict for each entry
engine.execute(SimpleTable.__table__.insert(),
               values) # around 600k dicts in a list
Run Code Online (Sandbox Code Playgroud)

我看到这是一个普遍的问题,但是我还没有设法在sqlalchemy本身中找到解决方案。有什么方法可以告诉sqlalchemy execute_values()在某些情况下调用吗?还有其他方法可以实现巨大的插入而无需自己构造SQL语句吗?

谢谢您的帮助!

python sqlalchemy psycopg2 python-3.x

3
推荐指数
2
解决办法
1190
查看次数

C#将字符串Unicode转换为字节Ansi

谷歌没有帮助我,比如我想在这里写帖子.我在C#和C函数(在dll中)有Unicode字符串,它需要char(ANSI)*.我试着去做

string tmp = "ala ma kota";
unsafe
{
    fixed (byte* data = &tmp.ToCharArray()[0])
    {
        some_function(data);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我没有编码就无法直接转换.我尝试使用Encode类但没有任何效果.我知道,some_function需要用char指针调用.它指向字节数组的位置.

c c# unicode character-encoding

2
推荐指数
1
解决办法
9056
查看次数

在reversed()上调用list()两次,第二次返回一个空列表

我不明白这段代码的结果:

aa = 'hello, world'
bb = reversed(aa)
print(bb)
print(list(bb))
print(bb)
dd = list(bb)
print(dd)
print(''.join(dd))
Run Code Online (Sandbox Code Playgroud)

结果:

<reversed object at 0x025C8C90>
['d', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'h']
<reversed object at 0x025C8C90>
[]
Run Code Online (Sandbox Code Playgroud)

为什么dd []?

python

2
推荐指数
1
解决办法
150
查看次数

ANSI编码文件使用php脚本转换为UTF-8编码文件?

ANSI编码文件如何使用php或任何脚本或linux下的任何命令行转换为UTF-8编码文件?

php linux converter utf-8 character-encoding

2
推荐指数
1
解决办法
1万
查看次数

C中的Shell排序没有给出所需的结果

我需要在C中实现Shell排序并使用优化版本(其中间隙首先设置为数组/ 2的大小,然后将此数字重复除以2.2).问题是答案并不总是完全排序,我不确定这是因为我的代码中的某些逻辑错误还是Shell排序的一些缺点.

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define MAX 7

void shellSort(int *a, int size);
void insert(int *a, int next_pos, int gap);

void shellSort(int *a,int size)
{
    int gap = floor(size/2);
    int next_pos;
    while (gap>0)
    {
        for(next_pos = gap; next_pos < size; next_pos++)
            insert(a, next_pos, gap);

        if(gap == 2)
            gap = 1;
        else
            gap = (int)(gap/2.2);
    }
}

void insert(int *a, int next_pos, int gap)
{
    int value = a[next_pos];
    while(next_pos >= gap && a[next_pos] < …
Run Code Online (Sandbox Code Playgroud)

c sorting shellsort

2
推荐指数
1
解决办法
117
查看次数

使用C中的regex.h计算匹配数

我regex.h在C中使用POSIX正则表达式来计算英语文本片段中短语的出现次数.但返回值regexec(...)仅表示是否找到匹配项.所以我尝试使用nmatch和matchptr找到不同的外观,但是当我打印出匹配时matchptr,我刚收到第一个短语的第一个索引出现在我的文本中.

这是我的代码:

#include <sys/types.h>
#include <regex.h>
#include <stdio.h>

#define MAX_MATCHES 20 //The maximum number of matches allowed in a single string

void match(regex_t *pexp, char *sz) {
    regmatch_t matches[MAX_MATCHES];
    if (regexec(pexp, sz, MAX_MATCHES, matches, 0) == 0) {
    for(int i = 0; i < MAX_MATCHES; i++)
        printf("\"%s\" matches characters %d - %d\n", sz, matches[i].rm_so, matches[i].rm_eo);
    } 
    else {
        printf("\"%s\" does not match\n", sz);
    }
}

int main(int argc, char* argv[]) …
Run Code Online (Sandbox Code Playgroud)

c regex

2
推荐指数
1
解决办法
989
查看次数

在c中,具有专用于分配内存的功能是不是很糟糕?

我已经组织了具有分配内存的功能的ac项目

例如,我得到了这个结构:

  typedef struct t_example{
    int x;
    int y;
  }example;
Run Code Online (Sandbox Code Playgroud)

我创建了这个函数来初始化一个实例:

  /**
   return value must be freed
   */
  example * example_init(){
    example *p_example = malloc(sizeof(example));
    p_example->x = 42;
    p_example->y = 42;
    return p_example;
  }
Run Code Online (Sandbox Code Playgroud)

我可以像这样调用这个函数

example *p_example = example_init();
Run Code Online (Sandbox Code Playgroud)

但随着我的项目的增长,我发现有时我不需要分配内存,如果我只需要堆栈上的局部变量,但需要初始化它,所以我将init函数更改为:

  void example_init(example *p_example){
    p_example->x = 42;
    p_example->y = 42;
  }
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样调用这个函数

example o_example;
example_init(&o_example);
Run Code Online (Sandbox Code Playgroud)

当然,如果我有一个指针,这个功能也可以工作

example *p_example = malloc(sizeof(example));
example_init(p_example);
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是最好的做法:1)提供,将分配内存(并正确记录本),因为它可以很方便进来的情况下的函数,或2),这应该是留给函数的调用者.

我还读到std函数没有动态分配内存,这就是strdup函数不是标准的原因.所以我会说第二种选择是最好的?

c memory-management

2
推荐指数
2
解决办法
464
查看次数

如何为C中的2D阵列位置分配值?

所以我是一个新手,所以请软一点.

我已经创建了一个2D数组,60x30并希望通过执行双循环来在屏幕上将其显示为网格.我正在使用一个简单的字符'.' 对于网格的每个插槽只是为了测试.

char FrameBuffer[29][59];
for (int i = 0; i <= 29; i++) 
{
    for (int j = 0; j <= 59; j++)
    {
        FrameBuffer[i, j] = '.';
        printf("%c ", FrameBuffer[i,j]);
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试为我的2D数组中的位置赋值时,例如

FrameBuffer[0,1] = '.',
Run Code Online (Sandbox Code Playgroud)

我遇到了一个错误:

Expression must be a modifiable lvalue
Run Code Online (Sandbox Code Playgroud)

c arrays 2d

2
推荐指数
1
解决办法
81
查看次数