1

Python を使用して、CSV ファイルのフィールド名 (または最初の行) の特殊文字を置き換えようとしています。特殊文字に密接に関連する質問がたくさんありますが、最初の行には何も見つからないようです. 私が持っているスクリプトは、ドキュメント全体でそれらを置き換えますが、最初の行でのみ実行したいです。readlines の代わりに readline を使用すればうまくいくと思いましたが、それではほとんどのファイルが消えてしまいます。どんな助けでも大歓迎です。私のコードは以下です。

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 = []
4

1 に答える 1

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])
于 2013-04-29T13:44:39.967 に答える