0

我有一个 CSV 文件,它由第一列中的单词组成。(每行 1 个字)

我需要打印这些单词的列表,即

CSV 文件:

a
and
because
have

想要的输出:

"a","and","because","have"

我正在使用python,到目前为止我有以下代码;

text=open('/Users/jessieinchauspe/Dropbox/Smesh/TMT/zipf.csv')
text1 = ''.join(ch for ch in text)
for word in text1:
    print  '"' + word + '"' +','

这是返回:

"a",
"",
"a",
"n",
...

而我需要一行一行的所有内容,而不是按字符而是按单词。谢谢您的帮助!

编辑:这是 CSV 文件预览的屏幕截图 CSV 文件的预览

4

5 回答 5

4

直接循环文件:

with open('/Users/jessieinchauspe/Dropbox/Smesh/TMT/zipf.csv') as text:
    print ','.join('"{0}"'.format(word.strip()) for word in text)

上面的代码:

  • 循环文件;这会给你一行(包括换行符\n)。
  • 用于.strip()删除单词周围的空格(包括换行符)。
  • 用于.format()将单词放在引号中('word'变成'"word"'
  • 用于','.join()将所有引用的单词连接到一个列表中,中间用逗号分隔。
于 2013-01-09T12:45:40.337 回答
1

您还可以使用 CSV 模块:

import csv

input_f = '/Users/jessieinchauspe/Dropbox/Smesh/TMT/zipf.csv'
output_f = '/Users/jessieinchauspe/Dropbox/Smesh/TMT/output.csv'

with open(input_f, 'r') as input_handle, open(output_f, 'w') as output_handle:
    writer = csv.writer(output_handle)
    writer.writerow(list(input_handle))
于 2013-01-09T12:56:01.977 回答
1

当你这样做时: text=open('/Users/jessieinchauspe/Dropbox/Smesh/TMT/zipf.csv') 基本上返回一个迭代器,每行作为一个元素。如果您想要一个列表,并且您确定每行只有一个单词,那么您需要做的就是

  result=list(text)
  print result

否则,您只能像这样得到第一个单词:

 result = list(x.split(',')[0] for x in text)
 print result
于 2013-01-09T12:50:03.503 回答
0

print ','.join('"%s"' % line.strip() for line in open('/tmp/test'))

于 2013-01-09T12:51:33.507 回答
0

如果您在 print 语句的末尾放置一个逗号,它会抑制换行符。

print  '"' + word + '"' +',',

将在一行上为您提供输出。

于 2013-01-09T12:46:56.307 回答