首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python -使用分隔符拆分CSV文件中的字符串

python -使用分隔符拆分CSV文件中的字符串
EN

Stack Overflow用户
提问于 2019-02-06 11:54:05
回答 4查看 14.9K关注 0票数 1

我有一个包含以下数据的CSV文件:

代码语言:javascript
复制
Date,Profit/Losses
Jan-10,867884
Feb-10,984655
Mar-10,322013
Apr-10,-69417
May-10,310503
Jun-10,522857
Jul-10,1033096
Aug-10,604885
Sep-10,-216386
Oct-10,477532
Nov-10,893810
Dec-10,-80353

我将文件导入到python中,如下所示:

代码语言:javascript
复制
with open(csvpath, 'r', errors='ignore') as fileHandle:
lines = fileHandle.read()

我需要遍历这些行,以便仅提取月份,即"Jan“、"Feb”等,并将其放在不同的列表中。我还必须以某种方式跳过第一行,即Date, Profit/Losses,它是标题。

这是我到目前为止写的代码:

代码语言:javascript
复制
months = []
for line in lines:
    months.append(line.split("-")

但是,当我尝试打印months列表时,它会拆分文件中的每个字符!!我哪里错了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-02-06 12:08:21

您几乎总是可以通过使用专门的工具来最小化痛苦,例如csv模块和列表理解:

代码语言:javascript
复制
import csv
with open("yourfile.csv") as infile:
    reader = csv.reader(infile) # Create a new reader
    next(reader) # Skip the first row
    months = [row[0].split("-")[0] for row in reader]
票数 2
EN

Stack Overflow用户

发布于 2019-02-06 12:05:59

您的问题的一个答案是使用fileHandle.readlines()

代码语言:javascript
复制
lines = fileHandle.readlines()
# print(lines)
# ['Date,Profit/Losses\n', 'Jan-10,867884\n', 'Feb-10,984655\n', 'Mar-10,322013\n',
#  'Apr-10,-69417\n', 'May-10,310503\n', 'Jun-10,522857\n', 'Jul-10,1033096\n', 'Aug-10,604885\n',
#  'Sep-10,-216386\n', 'Oct-10,477532\n', 'Nov-10,893810\n', 'Dec-10,-80353\n']

for line in lines[1:]:
    # Starting from 2nd item in the list since you just want months
    months.append(line.split("-")[0])
票数 1
EN

Stack Overflow用户

发布于 2019-02-06 12:00:32

如果你真的想用一种很难的方式来做这件事,那就试试这个:

代码语言:javascript
复制
months = []
for line in lines[1:]:
    months.append(line.split("-")[0])

lines[1:]将跳过第一行,而line.split("-")[0]将只提取月份并附加到您的列表months中。

但是,正如AChampion所建议的,您应该真正研究一下csvpandas包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54546368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档