簡體   English   中英

使用python從csv文件中刪除第一個和最后一個字符

[英]Remove first and last character from csv file using python

我需要轉置以下文件output1.csv,這是將量子化學計算有效地轉換為單個柱的結果:

 Frequencies --    18.8210                44.7624                46.9673
 Frequencies --    66.6706               102.0432               112.4930
 Frequencies --   124.4601               138.4393               180.1404
 Frequencies --   230.0306               240.4389               258.2459
 Frequencies --   282.7781               340.8302               357.7789
 Frequencies --   378.9043               384.1284               401.4285
 Frequencies --   418.0523               444.2264               447.6885
 Frequencies --   473.2391               501.0937               518.9083
 Frequencies --   559.5925               609.9256               623.7729
 Frequencies --   657.4144               672.5480               728.2009
 Frequencies --   740.5035               750.3238               757.2199
 Frequencies --   774.6343               806.7750               815.9990
 Frequencies --   839.3050               858.0716               876.1641
 Frequencies --   888.6654               942.2963               965.7888
 Frequencies --   987.3819               994.7388              1020.8724
 Frequencies --  1025.0426              1045.5129              1059.0966
 Frequencies --  1076.5127              1143.1178              1155.4200
 Frequencies --  1208.6790              1219.7513              1244.7080
 Frequencies --  1265.6108              1287.8830              1300.0463
 Frequencies --  1325.0427              1339.0678              1353.0061
 Frequencies --  1369.0614              1408.5258              1433.0543
 Frequencies --  1452.4148              1454.6319              1500.4304
 Frequencies --  1511.2305              1517.2562              1552.9189
 Frequencies --  1560.5313              1636.2290              1640.1732
 Frequencies --  1664.8747              1681.5566              1703.2026
 Frequencies --  1770.2627              3058.4143              3122.3743
 Frequencies --  3147.1828              3192.5897              3199.1398
 Frequencies --  3211.0676              3222.0033              3236.3394
 Frequencies --  3262.2119              3556.7997              3862.4791

為此,我編寫了以下代碼:

import os
import csv
import re
import sys
import pandas as pd

inputfile = open('output1.csv', 'r')
reader = csv.reader(inputfile)

outputfile = open('output1_f.csv', 'a')
writer = csv.writer(outputfile)

with open('output1_f.csv', 'w') as file:
    file.write('Frequencies,Frequencies,Frequencies\n')
for row in reader:   
    row = [re.sub(' +', ',', item) for item in row]
    row = [re.sub(',Frequencies,--,', '', item) for item in row]               
#    row = map(str.strip, row)
    writer.writerow(row)

inputfile.close()
outputfile.close()

我將代碼添加為注釋,以便從output1_f.csv文件的每一行中刪除“第一個和最后一個字符 。但是,此方法不起作用。

 row = map(str.strip, row)

我找到了line.replace解決方案 ,它創建了第二個output1_2f.csv文件。

inputfile = open('output1_f.csv', 'r')
outputfile = open('output1_2f.csv', 'w')
for line in inputfile:
    line = line.replace('"', '')
    outputfile.write(line)

inputfile.close()
outputfile.close()

以下轉置部分僅在刪除字符“時有效 ,這是我需要刪除字符代碼而不是line.replace的原因。

ifile  = open('output1_2f.csv', "rb")
reader = csv.reader(ifile)

with open('output1_transp.csv', 'w') as out:
    rownum = 0
    for row in reader:
    # Save header row.
        if rownum == 0:
            header = row
        else:
            colnum = 0
            for col in row:
                out.write( '%s\n' % (col))
                colnum += 1

        rownum += 1

ifile.close()

如果您能向我提出任何縮短代碼並使其更高效,更易於使用的想法,我將不勝感激。 謝謝開發人員的寶貴時間!!!

用戶https://codereview.stackexchange.com/users/39848/edward在這里提供了幫助

https://codereview.stackexchange.com/questions/134045/optimize-a-simple-and-quick-python-script-for-transposed-a-csv-file/134064#134064

with open('input.txt', 'r') as infile, open('out.csv', 'w') as outfile:
    print >> outfile, "Frequency"
    for line in infile:
        for freq in line.split()[2:]:
            print >> outfile, freq

暫無
暫無

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

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