2013-04-29 70 views
1

我想用我的CSV文件中的字段名稱(或第一行)來替換特殊字符。有很多與特殊字符密切相關的問題,但我似乎無法找到第一行的任何內容。腳本我已經在整個文檔中替換了它們,但我只希望它能在第一行中完成。我想如果我使用readline而不是readline,它會起作用,但這隻會使文件的大部分消失。任何幫助,將不勝感激。我的代碼如下。在Python中替換字段名稱中的特殊字符

import os, sys, csv 

lines = [] 

with open('C:/Characters.csv', 'r') as input: 
    lines = input.readlines() 

conversion = '-"/.$' 
newtext = '_' 
outputLines = [] 
for line in lines: 
    temp = line[:] 
    for c in conversion: 
     temp = temp.replace(c, newtext) 
    outputLines.append(temp) 

with open('C:/Characters_out.csv', 'w') as output: 
    for line in outputLines: 
     output.write(line + "\n")lines = [] 
+0

我不知道它爲什麼顯示「在此輸入代碼」當發佈該問題時,它說要格式化它,但我可能已經搞砸了。 – user2188645 2013-04-29 13:35:59

+0

要進行代碼格式化,請使用4個空格縮進或突出顯示並在編輯工具欄中按下「{}」按鈕。 – Inductiveload 2013-04-29 13:39:08

回答

1

你只需要調整的第一行中lines名單,有沒有需要遍歷所有的人,甚至是複製到一個新的列表:

import csv 

lines = [] 

with open('C:/Characters.csv', 'r') as input: 
    lines = input.readlines() 

conversion = '-"/.$' 
newtext = '_' 

for c in conversion: 
    lines[0] = lines[0].replace(c, new_text) 

with open('C:/Characters_out.csv', 'w') as output: 
    for line in lines: 
     output.write(line + "\n") 

你甚至可以做到這一點沒有lines陣列全天:

import csv 

input = open('C:/Characters.csv', 'r') 
output = open('C:/Characters_out.csv', 'w') 

conversion = '-"/.$' 
newtext = '_' 

index = 0 
for line in input: 
    if index == 0: 
     for c in conversion: 
      line = line.replace(c, new_text) 

    output.write(line + "\n") 
    index += 1 

您還可以使用正則表達式的轉換:

import re 
lines[0] = re.sub(r'[-"/\.$]', '_', lines[0]) 
+0

謝謝!它像一個魅力。 – user2188645 2013-04-29 15:20:23

+0

如果答案解決了問題,您可以用答案左側的刻度線標記來接受它。很高興它的工作! – Inductiveload 2013-04-29 15:50:27