使用pandas 18.1 ......
我正在尝试遍历CSV文件夹以读取每个CSV并将其发送到Oracle数据库表。在我的许多CSV之一中潜伏着一个非ascii角色(更喜欢陶醉于我的痛苦中)。我一直收到这个错误:
<set/>
以下是代码:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="15dp"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="5dp"
android:valueType="floatType" />
</item>
</selector>
</set>
我尝试了以下内容:
我想做什么: 用其他东西替换不可读的字符,最重要的是,继续向Oracle发送数据。
注意:
我使用的数据文件来自cms.gov网站。 Here's a zip file with an example。我正在使用“contracts_info”文件。
提前致谢!
答案 0 :(得分:0)
我将字符串字段分别编码为utf-8,这可能有所帮助(发生了新的错误,但我认为它与此无关):
dfc['Organization Type'] = dfc['Organization Type'].str.encode('utf-8')
新错误:
DatabaseError: (cx_Oracle.DatabaseError) ORA-00904: "Contract_ID": invalid identifier
这是因为“Contract_ID”未设置为索引。一旦我这样做,一切顺利(除了比糖蜜慢,这开始了我的下一次冒险)。
答案 1 :(得分:0)
您需要像这样设置NLS_LANG环境变量:
os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8'
那么就不会发生错误。