在Python 3中从CSV列表创建一个列

时间:2014-08-15 18:46:54

标签: python csv python-3.x

我所拥有的是一个CSV文件,其中标题为“keyword”,标题下的每个单元格都包含文本,如下所示:

Keyword
Lions Tigers Bears
Dog Cat
Fish
Shark Guppie

我要做的是将该列表中的每个短语解析为单个单词,以便最终产品如下所示:

     Keyword
      Lion
      Tigers
      Bear
      Dog
      Cat...

现在,我的代码获取了CSV文件,并将列表拆分为单独的部分,但仍然没有创建统一的列。

datafile = open(b'C:\Users\j\Desktop\helloworld.csv', 'r')
data = []
for row in datafile:
   data.append(row.strip().split(","))
   white = row.split()
   print (white)

我的输出如下:     ['关键词']     ['狮子','老虎']     ['海豚','熊','斑马']     ['狗','猫']

我知道可能的解决方案是使用lineterminator ='\ n',但我不知道如何将其合并到我的代码中。非常感谢任何帮助!

**已编辑 - 源CSV没有用逗号分隔每个短语中的单词

3 个答案:

答案 0 :(得分:1)

在列表中使用extend代替append,将列表中的所有项目添加到另一个项目中:

datafile = open(b'C:\Users\j\Desktop\helloworld.csv', 'r')
data = []
for row in datafile:
   data.extend(row.strip().split())
print(data)

要删除单个条目周围的更多空格,请使用

datafile = open(b'C:\Users\j\Desktop\helloworld.csv', 'r')
data = []
for row in datafile:
   data.extend(item.strip() for item in row.split())
print(data)

另外,要安全地阅读文件,您可以使用with语句(您不必再处理关闭文件了):

with open('C:\Users\j\Desktop\helloworld.csv', 'r') as datafile:
    data = []
    for row in datafile:
       data.extend(item.strip() for item in row.split())
    print(data)

编辑:在OP澄清之后,我删除了","中的split参数,以便在空格而不是在逗号上进行拆分。

答案 1 :(得分:0)

你只需要分开阅读:

with open("in.txt","r+") as f:
    data = f.read().split()
    f.seek(0) # go back to start of file
    f.write("\n".join(data)) # write new data to file
['Keyword', 'Lions', 'Tigers,', 'Bears', 'Dog', 'Cat', 'Fish', 'Shark', 'Guppie']

答案 2 :(得分:0)

您应该能够使用此代码来读取您的文件。用你拥有的文件替换文件名。我的文件内容正是您在上面发布的内容。

keyword = "Keyword"

with open("testing.txt") as file:
    data = file.read().replace("\n", " ").split(" ")
    for item in data:
        if item == keyword:
            print("%s" % keyword)
        else:
            print(" %s" % item)

输出:

Keyword
 Lions
 Tigers
 Bears
 Dog
 Cat
 Fish
 Shark
 Guppie
Keyword
 Dog
 Something
 Else
 Entirely