Python 要列出的CSV文件

Python 要列出的CSV文件,python,list,text,csv,Python,List,Text,Csv,我有一个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:

我有一个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文件预览的屏幕截图

直接在文件上循环:

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()
    将所有带引号的单词连接到一个列表中,中间带有逗号

直接在文件上循环:

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()
    将所有带引号的单词连接到一个列表中,中间带有逗号

如果在print语句末尾加逗号,则会取消换行

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

将在一行上为您提供输出

如果在print语句的末尾加上逗号,则会取消换行符

print  '"' + word + '"' +',',
将在一行上为您提供输出

当您这样做时: 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
当您这样做时: 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

print','.join('%s''%line.strip(),用于打开的行('/tmp/test'))
print','.join('%s''%line.strip(),用于打开的行('/tmp/test'))
您还可以使用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))

您还可以使用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))


文件每行是否始终只有一个单词?或者它可能有多个逗号分隔的字段?您查看过python提供的csv库吗?@BenButler Cole是的,它总是每行一个单词。行
“”。join(ch代表ch in text)
相当于
“”。join(text)
文件是否总是每行只有一个单词?或者它可能有多个逗号分隔的字段?您查看过python提供的csv库吗?@BenButler Cole是的,它总是每行一个单词。行
“”。join(ch代表ch in text)
相当于
“”。join(text)
我支持这个答案。:),尽管从技术上讲,
.strip()
可以删除的不仅仅是换行符。这可能是需要的,但如果不是,OP可以使用
word.rstrip('\n')
或简单的切片:
word[:-1]
。这相当于我的解决方案,比我的解决方案好一点。@mgilson:我已经澄清了一点,我的解释确实不完整。对我来说似乎不起作用,返回一长串相邻的单词:“A和haveable一致。。。。“@Julia:您的输入示例为我提供了
“a”,“and”,“because”,“have”
;要获得输出,
文本必须是一个长单词,而不是每行一个单词的文件。我支持这个答案。:),尽管从技术上讲,
.strip()
可以删除的不仅仅是换行符。这可能是需要的,但如果不是,OP可以使用
word.rstrip('\n')
或简单的切片:
word[:-1]
。这相当于我的解决方案,而且比我的解决方案好一点。@mgilson:我已经澄清了一点,我的解释确实不完整。对我来说似乎不起作用,返回一长串相邻的单词:“aaandhaveableaccordingly…”。。。。“@Julia:您的输入示例为我提供了
“a”,“and”,“because”,“have”
;要获得您的输出,
text
必须已经是一个长单词,而不是每行一个单词的文件。OP需要去掉
text1=”。join(ch代表ch in text)
同样如此。此解决方案在行尾提供了一个额外的逗号。这正是我需要的,但它认为每个字符都是一个单独的单词:“,”t“,”l“,”y“,”c“,”o“,”n“,”s“,”i“,”d“,”e“,”r“,”OP需要去掉
text1=”。join(ch表示ch in text)
同样如此。此解决方案在行尾提供了一个额外的逗号。这正是我所需要的,但它将每个字符视为一个单独的单词:“,”t“,”l“,”y“,”c“,”o“,”n“,”s“,”i“,”d“,”e“,”r“,”“我想知道为什么
writerow
需要一个序列对象而不是任何通用的iterable…@mgilson:现在我想起来,这很奇怪。我得看看这是不是对的,没错。文档说的是
sequence
,如果您试图用生成器表达式编写一行,则会引发异常。我尝试了
inspect.getsourcelines
,但失败得很惨——可能是因为它是一个C实现。我得到了以下结果:回溯(最近一次调用):writer.writerow(list(input\u handle))IOError:文件未为打开writing@Julia:哎呀,最后一个
'r'
应该是
'w'
。我想知道为什么
writerow
需要一个序列对象而不是任何通用的iterable…@mgilson:现在我想起来了