2016-06-23 13 views
0

私は変換したいexelfileを持っていますが、数値のデフォルトの型はfloatです。 xlwingsが数値ではなく文字列を明示的に使用するように、どうすれば変更できますか?xlwingsで各フィールドを文字列として読み取るにはどうすればよいですか?

これは、私は、フィールドの値を読み取る方法です: xw.Range(sheet, fieldname).value

問題は、私はそれから文字列を作成する場合40のような数字が40.0に変換してしまうことがあります。私はそれをストリップします:str(xw.Range(sheetFronius, fieldname).value).rstrip('0').rstrip('.')しかし、それはあまり有用ではなく、同じフィールドに数値と文字列の両方が含まれることがあるため、エラーにつながります。 (同時に、値はリストから選択されません)

答えて

2

xlwingsの場合、読み書き操作中にオプションが設定されていない場合、単一のセルは「浮動小数点数」として読み込まれます。また、デフォルトでは、数値を持つセルは '浮動小数点数'として読み込まれます。私はドキュメントを精査しましたが、xlwingsを使って数字を '文字列'に変換することはできません。幸いにも、すべてが失われることはありません...

xlwingsで 'int'としてセルを読み込み、Pythonで 'int'を 'string'に変換できます。次のようにそれを行う方法は次のとおりです。

xw.Range(sheet, fieldname).options(numbers=int).value 

そして最後に、あなたが(先行オプションに文字列変換を梱包して)あなたのデータにこの方法を読むことができます:

xw.Range(sheet, fieldname).options(numbers=lambda x: str(int(x))).value 

次に、あなただけの希望それを通常の方法でPythonの文字列に変換します。

幸運を祈る!

+1

'xw.Range(sheet、fieldname).options(numbers = lambda x:str(int(x)))。value' –

+0

努力してくれてありがとうございます。そのフィールドに文字列がある可能性もあるので、そのように使用しないでください。 – simonides

+1

@imimidesラムダ式は数字にのみ適用され、文字列はそのままです。 –

関連する問題