从中剪切列表csv.read文件

2024-05-23 21:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,所以请耐心等待。我尝试使用slice提取列表中每个项目的前10个字符。列表来自csv.reader功能。当我在csv.readervs我在代码中创建的列表。 我的列表timesheet.csv包含以下值:

20/10/2015 09:10
20/10/2015 10:20
20/10/2015 16:30
21/10/2015 08:30
21/10/2015 09:45
21/10/2015 10:22
21/10/2015 14:01

我试图删除时间,只留下日期。所以我认为下面的代码应该可以做到:

^{pr2}$

我原以为它会输出:

20/10/2015
20/10/2015
20/10/2015
21/10/2015
21/10/2015
21/10/2015
21/10/2015

但是我得到了全部清单:

20/10/2015 09:10
20/10/2015 10:20
20/10/2015 16:30
21/10/2015 08:30
21/10/2015 09:45
21/10/2015 10:22
21/10/2015 14:01

奇怪的是,如果我用另一种方法添加列表来测试,例如

your_list = ['21/10/2015 16:14', '20/10/2015 23:00']
for x in your_list:
current_date = x[:10]
print(current_date)

输出如我所愿:

21/10/2015
20/10/2015

我认为这与对列表项中的项数进行切片修剪有关,而不是字符数,但我不太明白原因? 谢谢


Tags: csv项目代码功能列表yourdateslice
3条回答

试试这个:

with open("your_file") as f:
    for line in f:
        print line.split()[0]
        #or print line[:10]  if you want to use slicing approach 

这是因为your_list是一个列表列表。要解决您的问题,请将current_date = x[:10]更改为current_date = x[0][:10],这样会很好。在

问题是your_list中的项是包含字符串的列表,而不是字符串。在

尝试:

for x in your_list:
    current_date = x[0][:10]
    print current_date

这应该是你想要的。x[0]是列表中包含的x的字符串。在

请注意,另一种方法是使用熊猫:

^{pr2}$

相关问题 更多 >