我不明白为什么有这个encoding以及fileencoding在VIM中.
据我所知,文件就像一个字节数组.当我们创建一个文本文件时,我们创建一个字符(或符号)数组,并将这个带有X编码的字符数组编码为一个字节数组,并将字节数组保存到磁盘上.在文本编辑器中读取时,它使用编码X解码字节数组以重建原始字符数组,并根据字体显示每个字符的图形.在此过程中,只涉及一种编码.
在VIM中设置编码和fileencoding utf-8,它引用VIM的wiki关于使用unicode,
encoding设置vim如何在内部表示字符.对于大多数Unicode来说,Utf-8是必需的.
fileencoding设置特定文件的编码(缓冲区本地)
" vim如何在内部表示字符 "vs" 特定文件的编码 "... ...转发Unicode与UTF-8?如果是这样,为什么用户会为前者烦恼呢?
任何提示?
对于一个非常大的整数范围,xrange应该使用(Python 2),它range在Python 3中重命名.我假设模块six可以提供一致的写作原因.
但我发现six.moves.builtins.range在Python 2中返回一个列表,在Python 3中返回一个可迭代的非列表对象,就像名字range一样.
此外,six.moves.builtins.xrangePython 2中不存在.
我使用了错误的功能six吗?或者六个根本没有提供range和xrange功能的解决方案?
我知道我可以相应地测试sys.version[0]和重命名该功能.我只是在寻找"不要重复自己"的解决方案.
如mgilson所述:
>>> import six
>>> six.moves.range
AttributeError: '_MovedItems' object has no attribute 'range'
Run Code Online (Sandbox Code Playgroud)
它是与版本相关的东西six,还是没有这样的东西six.moves.range?
我有一个DataFrame这样的:
In [140]: df.head()
Out[140]:
user brand action nthday
0 767 3961 0 51
1 767 3961 2 51
2 767 3961 2 51
3 767 3961 0 51
4 767 3961 0 51
Run Code Online (Sandbox Code Playgroud)
我想选择带有元组列表的行,如下所示:
mylist = [(767, 3961), (768, 4201),...]
Run Code Online (Sandbox Code Playgroud)
我可以做我想要的:
# ( (767, 3961, 0, 51), ... )
intermediate_ = ( tuple(r) for (i,r) in df.iterrows() if tuple(r)[:2] in set(mylist))
# reconstruct a DataFrame
subdf = DataFrame(intermediate_, columns = ['user', 'brand', 'action', ..])
Run Code Online (Sandbox Code Playgroud)
这可行,但笨拙且缓慢。推荐的方式是pandas什么?
我从这里看到了以下代码.
d[key] = data # store data at key (overwrites old data if
# using an existing key)
data = d[key] # retrieve a COPY of data at key (raise KeyError if no
# such key)
Run Code Online (Sandbox Code Playgroud)
我不明白这样做的意思.据说retrieve a COPY of data at key.似乎dict查找(getitem,或索引,哪一个是正确的术语?)将成为对象的应对?对?