は、私は以下に示すのスレッドを読んできました:Python:部分的なファイル名を保持したり変更する方法は?
しかし、彼らは私が探しています正確に何ではありません。
私がここで達成しようとしているのは、ファイルをExcelからCSVに変換しながらファイルの名前を変更することです。私の変換コードは機能しますが、出力ファイル名に不要な単語を取り除きたいと思っています。
のは、私のファイル名があるとしましょう: "Great_day_2015-1-14.xlsx"
、 "Sample_file_2016-4-30.xlsx"、 "Hello_world_2014-5-30.xlsx"
私は(数字は削除される前に、すべての文字)私の出力になりたい:
"2016-4-30.csv"、 "2014-5-30.csv"、「2015から1 -14.csv "
は、ここで私はすでにやったものだ(と、コードは動作します):
def xslx_to_csv(): files = os.listdir(r"~\files to be converted") current_path = os.getcwd() os.chdir(r"~\files to be converted") for file in files: print file filename = os.path.splitext(file)[0] wb = xlrd.open_workbook(file) sh = wb.sheet_by_index(0) new_ext = 'csv' new_name = (filename, new_ext) csvfile = open(".".join(new_name), 'wb') wr = csv.writer(csvfile, quoting=csv.QUOTE_ALL) for rownum in xrange(sh.nrows): wr.writerow(sh.row_values(rownum)) csvfile.close()
しかし、このコードは唯一、以下のように私に出力を提供します:
「Sample_file_2016-4-30。 CSV」、 "Hello_world_2014-5-30.csv"、 "Great_day_2015-1-14.csv" 私がこれまで試したどのような
:
os.rename()
とstr.replace()
(Djizeusの提案通り)を試してみました。また、部分文字列を取得するために静的な文字列の位置(例:new_name[14:35]
)を試しました。しかし、もっと動的な方法が必要です。 yyyy-mm-ddの形式で数字の前のすべての文字を認識して削除するにはどうすればよいですか?
ボーナス質問: 私は少しさらにこれをしたい、だけではなく、ファイル名から余分な部分を除去する、私はどのように私は、ファイル名を変更することができだろう。例えば、この場合には、所望の出力とすることができる:
"Bonus_file_2016-4-30.csv"、 "Bonus_file_2014-5-30.csv"、 "Bonus_file_2015-1-14.csv"
基本的には、最初の単語を「ボーナス」のような特定の単語に置き換えたいと考えています。
'new_name.replace( 'サンプル'、 'おまけ')' – Djizeus
投稿する前に、いくつかの研究を行うください... – Djizeus
HIこの例には合っていますが、どうすればよりダイナミックにすることができますか?ファイルが同じ文字列 "Sample"で始まらない場合はどうすればよいですか? – alwaysaskingquestions