Python中操作Excel 2000的xlsx文件(使用openpyxl)

在工作中,我们经常需要将数据导出成表格的形式。常见的cvs格式(使用逗号分隔),虽然生成简单,但难免存在以下问题:

1、需要对文本中的逗号进行转义,特别是当文本中需要保留逗号的时候,往往无能为力。

2、字符编码问题,对于Office的一些版本,直接打开utf8编码的cvs,可能会出现乱码。因此,依然需要将cvs另存为Excel格式,才能方便使用。

下面我们介绍开源模块openpyxl,它能够帮助我们在Python中,直接操作Excel 2000文件格式(xlsx)。

一、[......]

继续阅读

C++中,解析UTF-8字符的位置。

在C++的char*以及string中,使用的是字节流编码,即sizeof(char) == 1。

也就是说,C++是不去分字符的编码的。

而一个合法UTF8的字符长度可能为1~4位。

现在假设一串输入为UTF8编码,如何能准确的定位到每个UTF8字符的“CharPoint”,而不会错误的分割字符呢?

参考这个页面:http://www.nubaria.com/en/blog/?p=289

可以改造出下面的函数:
const unsigned char kFirs[......]

继续阅读

Linux screen设置tab title被重置的问题

在某些Linux机器上,开启screen后,当设置了tab的title(Ctrl+A,A)后,输入任意命令,tab title会被重置为机器名称。

之前在某厂实习的时候,也遇到了相同的问题,一直以为是screen配置的问题。

其实,这是bash的配置。

看~/.bashrc:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
而在/etc/bashrc中,有[......]

继续阅读

flex & bison 如何用yylval传递字符串值

flex进行scanner,将数值存入yylval。

而bison读取yylval之中的值。

神奇的yylval是int类型,如何让它存储多种类型呢?

以string为例:

需要在.l和.y的头部第一句加入:
#define YYSTYPE char*
在.l赋值的时候,要特别注意,需要拷贝字符串。
yylval = strdup(yytext); return WORD;
在.y取用的时候,直接强转就可以了。
(char*)$1
关于更优雅的实现方式,当然[......]

继续阅读