【问题标题】:Adding comma in all the rows except last row in python csv reader?在python csv阅读器中除最后一行之外的所有行中添加逗号?
【发布时间】:2019-09-25 00:54:09
【问题描述】:

我需要在 csv 文件的所有行中添加逗号标记,python 中的最后一行除外。我已经尝试过,但在最后一行中也添加了逗号标记。如何丢弃csv文件最后一行的逗号?

我正在阅读具有近 3000 行和 2 列的 csv 文件(我将每个合并的行(用于 2 列)附加在引号内。我已经尝试过,但是非常感谢任何帮助。

代码:

import csv, string, nltk
def process_rs():
    with open('rs1.csv') as f:
       reader = csv.reader(f)
       next(reader, None)
       global raw_text
       with open('raw_reqs.txt', 'w', encoding = 'utf-8') as f1:
          for row in reader:
              raw_text = ('"'+' '.join(row)+'.'+'"'+', ')
              f1.write(raw_text)
              print(raw_text)
process_rs()

【问题讨论】:

    标签: python python-3.x file csv rows


    【解决方案1】:
    import pandas as pd
    
    df = pd.read_csv('file.csv')
    df[:-1].to_csv('newFile', sep = ',')
    #adding the last row without separator:
    with open('newFile', 'a') as f:
        df[-1:].to_csv(f,header=f.tell()==0, sep = ' ')
    

    你可以阅读更多关于方法选项https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

    【讨论】:

    • 对不起,我忘了最后一行。您可以使用数据帧的索引。
    【解决方案2】:

    您可以将 for 循环更改为如下内容:

    with open('raw_reqs.txt', 'w', encoding = 'utf-8') as f1:
        rows = ('"{}."'.format(' '.join(row)) for row in reader)
        raw_text = ', '.join(rows)
        f1.write(raw_text)
    

    请注意rows 正在获取一个生成器,这意味着它只能迭代一次。将其更改为列表理解,您可能需要多次使用rows 内容。

    【讨论】:

      【解决方案3】:

      我建议阅读所有行,丢弃最后一行,然后解析其余行,如下所示:

      import numpy as np
      
      with open('file.csv', 'r') as fid:
          lines = fid.readlines()
      
      # discard the last row:
      lines = lines[:-1]
      
      # parse the rest into an array
      a     = np.array( [line.strip('\n').split(',')  for line in lines], dtype=float )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-03
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 2018-02-01
        • 1970-01-01
        相关资源
        最近更新 更多