2014年12月15日月曜日

[Python]pythonで複数の任意の文字をまとめて除去する

replaceや正規表現も便利なのですが、translate()を使うと楽です。

:(コロン)と[](カッコ)を除去する場合
In [1]: mystr = "seq:100[hoge]"

In [2]: mystr.translate(str.maketrans("", "", ":[]"))
Out[2]: 'seq100hoge'  

maketransの引数の数によって置換えにしたりできるのですが、
ひとまず除去の場合は3番目の引数に文字を指定しておくと
それらを取り除くという挙動になるようです。

私はwin32com.clientでExcelを操作するスクリプトを書いた時に、
シート名に指定できない文字(: \ [ ] / *)を除去するのに使いました。

他にも色々使えそうですね。

2014年10月26日日曜日

python + openpyxlで同じドキュメント内にハイパーリンクする方法

openpyxlを使ってExcelファイルを操作するときに、
同じワークブック内の別シートへリンクする方法です。
(シート上で右クリックして「ハイパーリンク」と同じことをしたいということです)

どうやらcellのhyperlinkプロパティに文字列で下記のように指定すればいいようです。
下記例では、sheet2シートのA1へリンクを貼っています。
cell.hyperlink = "#sheet2!A1"