我正在尝试读取csv并将带有分隔符的某些输出字符串分成一个列表,但是当我尝试使用数组读取列表时,它抛出了错误,提示“列表索引超出范围”。该列表应包含2个元素。请参阅随附的代码。请,请帮助我指出代码出了什么问题。索引0可以正常工作。
csv文件如下所示: ID,全名,姓氏
1,约翰·史密斯(John Smith),“史密斯(Jonh)”
2,卡米尔·约翰逊,“约翰逊,卡米尔”
3,Bang Dong,“ Dong,Bang”
4,查尔斯·辛普森,“查尔斯·辛普森”
import csv
with open('testfile.csv', 'r', newline='') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
# print(row)
# print (row[2])
a = row[2].split(sep=", ")
print(a[1])
答案 0 :(得分:1)
您可以尝试以下方法:
project
|_moduleA
|_main
|_test
|_moduleB
|_main
|_test
这会将csv文件读入数据框,您可以访问列并将其转换为如下列表:
import pandas as pd
df = pd.read_csv('testfile.csv')
答案 1 :(得分:0)
问题是您使用“,”作为分隔符,但“姓氏”列中也包含逗号。
在这一行代码中:
a = row[2].split(sep=", ")
您正在尝试将名字和姓氏分开,并假定它返回一个元组,您试图在此处显示该元组: 打印(a [1])
问题是一个将不是元组,因为此列中的逗号是。相反,将有一行[3],在您的情况下,“史密斯”将在第[2]行中,而“约翰”将在第[3]行中。 为避免这种情况,请使用其他定界符。
答案 2 :(得分:0)
以与csv编码相同的方式使用pandas效果很好。谢谢纳撒尼尔。
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
tools:context=".Activities.LoadSavedCoffretDataActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/white"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<ImageView
android:id="@+id/cancel_img"
android:layout_marginTop="?attr/actionBarSize"
android:elevation="5dp"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/cancel" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_id"
android:layout_marginTop="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal">
<ImageView
android:id="@+id/delete_img"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/ic_delete_forever_black_24dp"/>
</LinearLayout>