打开csv文件而不自动分离内容

时间:2018-10-14 06:33:59

标签: python python-3.x csv

我有一个csv,其中包含类似

的文字
AAABBBBCCCDDDDDDD
EEEFFFRRRTTTHHHYY

当我运行如下代码时:

rows = csv.reader(csvfile)
  for row in rows:
    print(" ".join('%s' %row for row in rows))

它将按以下方式进行投影:

['AAABBBBCCCDDDDDDD']
['EEEFFFRRRTTTHHHYY']

但是我想显示为如下一系列单词:

AAABBBBCCCDDDDDDDEEEFFFRRRTTTHHHYY

代码有什么问题吗?

3 个答案:

答案 0 :(得分:0)

您的示例看起来像您只需要

with open(csvfile) as inputfile: # misnomer; not really proper CSV
    for row in inputfile:
        print(row.rstrip('\n'), end='')

答案 1 :(得分:0)

您提供的示例看起来不像一个csv文件。它看起来像一个简单的文本文件。您可能会遇到一些简单的事情:

Input.txt

AAABBBBCCCDDDDDDD
EEEFFFRRRTTTHHHYY

Solution.py

input_filename = "Input.txt"

with open(input_filename) as input_file:
    print("".join(x.rstrip('\n') for x in input_file))

这是利用:

  • 可以迭代一个文件对象。这将为您提供每次迭代的新行
  • 从文件接收到的每一行末尾都将包含换行符。由于您似乎不想使用它,因此我们使用方法.rstrip()将其删除
  • .join()方法甚至可以接受任何可迭代的方法...
  • Generator expression,这将帮助我们创建一个迭代器,该迭代器将被.join()使用.rstrip()来格式化来自输入文件的每一行。

编辑:好的,让我们进一步分解我的答案:

  • 打开文件时,可以对其进行迭代。用最简单的方式解释它,可以说这意味着您对其进行了循环(for line in input_file: ...)。
  • 不仅如此,还可以使用迭代器通过转换每个元素来创建另一个迭代器。这就是list comprehension,或者在我选择的情况下,generator expression就是这样。因此,表达式(x.rstrip() for x in input_file)将是一个迭代器,它接受input_file的每个元素并对其应用.rstrip()
  • 字符串方法.join()将使用该字符串作为分隔符的迭代器提供的元素粘合在一起。由于我在此处使用空字符串,因此不会使用分隔符。我已经使用了之前定义的迭代器。
  • 然后我print() .join()操作提供的字符串。

我对我的答案做了一个小小的更正,因为有一个极端的情况,如果输入文件中一行的末尾有空格或制表符,那么如果我使用x.rstrip()而不是它们将被删除。 x.rstrip('\n')

答案 2 :(得分:-1)

您可以以空字符串开头,对于从csv文件读取的每一行,请删除末尾的换行符,然后将内容添加到空字符串中。

joined = ""

with open(csvfile) as f:
    for row in f:
        joined = joined + row.replace("\n","")

print(joined)

输出:

>> AAABBBBCCCDDDDDDDEEEFFFRRRTTTHHHYY