![](/img/trans.png)
[英]If first or last character from string is $ remove it in python
[英]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在這里提供了幫助
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.