小编Joe*_*ron的帖子

在ipython / ipython Notebook中在函数调用之前用分号表示奇怪的行为

我偶然发现了一些奇怪的行为,ipython-notebook并想知道目的是什么。如果在函数调用之前输入分号,则会得到将函数应用到反映函数名称后的所有代码的字符串的结果。例如,如果我;list('ab')得到的结果是list("('ab')")

In [138]:    ;list('ab')
Out[138]:
['(', "'", 'a', 'b', "'", ')']
Run Code Online (Sandbox Code Playgroud)

我使用的是jupyteripython 4。它发生在ipython和中ipython notebook。有没有人看过这个,或者有没有人知道它是否是预期的,如果是,为什么?

python ipython ipython-notebook

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

在 Python 3.6 中使用 pandas.to_sql 将外来(非 ASCII)字符写入 Oracle DB

pandas.DataFrame我在将包含非 ASCII 字符的值写入 Oracle 数据库时遇到困难。这是一个可重现的示例(给定真实的连接字符串):

\n\n
import pandas as pd\nfrom sqlalchemy import create_engine, Unicode, NVARCHAR\n\nconnection_string = oracle://<name>:<password>@<database>'\n\ndf = pd.DataFrame([\n        ['Soci\xc3\xa9t\xc3\xa9 G\xc3\xa9n\xc3\xa9rale']\n    ], columns=['firm'])\n\nconn = create_engine(connection_string, encoding='utf-8')\ndtypes = {'firm': Unicode(40)}\n\ndf.to_sql('test', con=connection_string, dtype=dtypes, if_exists='replace')\n
Run Code Online (Sandbox Code Playgroud)\n\n

产生的错误看起来像

\n\n
UnicodeEncodeError: 'ascii' codec can't encode character '\\xe9' in position 4: ordinal not in range(128)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想问题是如何让它在写入时使用UTF-8编码。encoding我知道in的默认值create_engineutf-8',我认为它会控制使用的编码。\n我也尝试过dtypes = {'firm': NVARCHAR(40, convert_unicode=True)},但遇到了同样的错误。

\n\n

我尝试在写入 ( ) 之前对数据进行编码,df['firm'] = df.firms.str.encode('utf-8')这确实解决了这个问题,但结果却导致了更大的问题。

\n\n

这似乎是一个简单的问题,但我花了几个小时查看文档和 SO,但不知道该怎么做。

\n\n

使用的版本是;Python: 3.6 …

python oracle encoding pandas

5
推荐指数
1
解决办法
1356
查看次数

标签 统计

python ×2

encoding ×1

ipython ×1

ipython-notebook ×1

oracle ×1

pandas ×1