2

Python 2.7を実行していObjectListViewますが、人口統計情報が大量に表示されています。正しく並べ替えることはできますが、出力は100000.0フォーマットで表示されます。ロケールモジュールを使用して整数を文字列に変換すると、降順の文字列が9,181, 9,069, 818, 813, 8,730,次のように並べ替えられます。整数のように並べ替える方法はありますが、出力はObjectListView?でフォーマットされたコンマとして表示されます。

4

2 に答える 2

1

yourColumn次を使用して、表示文字列ではなく整数値で並べ替えることができます。

yourColumn = ColumnDefn("Title", "center", 100, "title", stringConverter=int_to_string_with_commas)

--よりスマートな文字列変換を参照してください

int_to_string_with_commas整数を文字列(コンマ付き)に変換する関数はどこにありますか?

import locale
locale.setlocale(locale.LC_ALL, 'en_US') # your locale here

def int_to_string_with_commas(value):
    return locale.format("%d", value, grouping=True)

書く他の方法については、この質問int_to_string_with_commasを参照してください。

于 2012-10-16T00:37:10.713 に答える
0

私を正しい軌道に乗せてくれてありがとう!最終的に、ObjectListView.pyソースに2行を追加することになりました。3601行目あたりで、_StringToValue関数を次のように変更しました。

    if converter == "%cd": ##New Line
        return locale.format("%d", value, grouping=True) ##New Line
    else:
     fmt = converter or "%s"
     try:
        return fmt % value
     except UnicodeError:
        return unicode(fmt) % value

上記のように、ローカルインポート後にロケールを設定する必要もあります。

  locale.setlocale(locale.LC_ALL, 'en_US')

ありがとう、私はしばらくの間これに頭を打ちつけてきました。乾杯!

于 2012-10-16T17:00:23.147 に答える