簡體   English   中英

打開csv文件而不自動分離內容

[英]Open a csv file without separating the content automatically

我有一個csv ,其中包含類似

AAABBBBCCCDDDDDDD
EEEFFFRRRTTTHHHYY

當我運行如下代碼時:

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

它將預測如下:

['AAABBBBCCCDDDDDDD']
['EEEFFFRRRTTTHHHYY']

但我想顯示為如下一系列單詞:

AAABBBBCCCDDDDDDDEEEFFFRRRTTTHHHYY

代碼有什么問題嗎?

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

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

您提供的示例看起來像一個csv文件。 它看起來像一個簡單的文本文件。 您可能會像以下這樣簡單:

Input.txt

AAABBBBCCCDDDDDDD
EEEFFFRRRTTTHHHYY

解決方案

input_filename = "Input.txt"

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

這利用了:

  • 可以迭代文件對象。 這將為您提供每次迭代的新行
  • 從文件收到的每一行的末尾都有換行符。 由於您似乎不希望使用它,因此我們使用.rstrip()方法將其刪除
  • .join()方法甚至可以接受任何可迭代的...
  • 生成器表達式 ,它將幫助我們創建一個迭代器,該迭代器將使用.rstrip()來接受.join() .rstrip()來格式化來自輸入文件的每一行。

編輯:好的,讓我們進一步分解我的答案:

  • 打開文件時,可以對其進行迭代。 用最簡單的方式解釋它,可以說這意味着您對其進行了循環( for line in input_file: ... )。
  • 不僅如此,您還可以使用迭代器通過轉換每個元素來創建另一個迭代器。 這就是列表理解,或者,在我選擇的情況下,就是生成器表達式 因此,表達式(x.rstrip() for x in input_file)將是一個迭代器,該迭代器接受input_file每個元素並將其應用於.rstrip()
  • 字符串方法.join()將使用該字符串作為分隔符的迭代器提供的元素粘合在一起。 由於我在此處使用空字符串,因此不會使用分隔符。 我已經為此使用了之前定義的迭代器。
  • 然后,我將前面解釋的.join()操作提供的字符串print()

我對我的答案做了一個小小的更正,因為有一個x.rstrip()情況,如果輸入文件中一行的末尾有空格或制表符,那么如果我使用x.rstrip()而不是x.rstrip('\\n')它們將被刪除。 x.rstrip('\\n')

您可以以空字符串開頭,對於從csv文件讀取的每一行,請刪除末尾的換行符,然后將內容添加到空字符串中。

joined = ""

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

print(joined)

輸出:

>> AAABBBBCCCDDDDDDDEEEFFFRRRTTTHHHYY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM