File: numbers.html

package info (click to toggle)
python-pybabel 0.9.1-9
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 6,264 kB
  • ctags: 921
  • sloc: python: 5,520; makefile: 49
file content (141 lines) | stat: -rw-r--r-- 8,021 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!DOCTYPE html>

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/">
<title>Babel: Number Formatting</title>
<link rel="stylesheet" href="common/style/edgewall.css" type="text/css">
</head>
<body>
<div class="document" id="number-formatting">
    <div id="navigation">
      <span class="projinfo">Babel 0.9.1</span>
      <a href="index.html">Documentation Index</a>
    </div>
<h1 class="title">Number Formatting</h1>
<div class="contents topic">
<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="auto-toc simple">
<li><a class="reference" href="#pattern-syntax" id="id1" name="id1">1   Pattern Syntax</a></li>
<li><a class="reference" href="#parsing-numbers" id="id2" name="id2">2   Parsing Numbers</a></li>
</ul>
</div>
<p>Support for locale-specific formatting and parsing of numbers is provided by
the <tt class="docutils literal"><span class="pre">babel.numbers</span></tt> module:</p>
<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">from</span> <span class="nn">babel.numbers</span> <span class="k">import</span> <span class="n">format_number</span><span class="p">,</span> <span class="n">format_decimal</span><span class="p">,</span> <span class="n">format_percent</span>
</pre></div>
<p>Examples:</p>
<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">format_decimal</span><span class="p">(</span><span class="mf">1.2345</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'en_US'</span><span class="p">)</span>
<span class="go">u'1.234'</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">format_decimal</span><span class="p">(</span><span class="mf">1.2345</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'sv_SE'</span><span class="p">)</span>
<span class="go">u'1,234'</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">format_decimal</span><span class="p">(</span><span class="mi">12345</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'de_DE'</span><span class="p">)</span>
<span class="go">u'12.345'</span>
</pre></div>
<div class="section">
<h1><a id="pattern-syntax" name="pattern-syntax">1   Pattern Syntax</a></h1>
<p>While Babel makes it simple to use the appropriate number format for a given
locale, you can also force it to use custom patterns. As with date/time
formatting patterns, the patterns Babel supports for number formatting are
based on the <a class="reference" href="http://unicode.org/reports/tr35/#Number_Format_Patterns">Locale Data Markup Language specification</a> (LDML).</p>
<p>Examples:</p>
<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">format_decimal</span><span class="p">(</span><span class="o">-</span><span class="mf">1.2345</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">'#,##0.##;-#'</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'en'</span><span class="p">)</span>
<span class="go">u'-1.23'</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">format_decimal</span><span class="p">(</span><span class="o">-</span><span class="mf">1.2345</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">'#,##0.##;(#)'</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'en'</span><span class="p">)</span>
<span class="go">u'(1.23)'</span>
</pre></div>
<p>The syntax for custom number format patterns is described in detail in the
the specification. The following table is just a relatively brief overview.</p>
<blockquote>
<blockquote>
<table border="1" class="docutils">
<colgroup>
<col width="13%">
<col width="87%">
</colgroup>
<thead valign="bottom">
<tr><th class="head">Symbol</th>
<th class="head">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr><td><tt class="docutils literal"><span class="pre">0</span></tt></td>
<td>Digit</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">1-9</span></tt></td>
<td>'1' through '9' indicate rounding.</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">@</span></tt></td>
<td>Significant digit</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">#</span></tt></td>
<td>Digit, zero shows as absent</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">.</span></tt></td>
<td>Decimal separator or monetary decimal separator</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">-</span></tt></td>
<td>Minus sign</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">,</span></tt></td>
<td>Grouping separator</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">E</span></tt></td>
<td>Separates mantissa and exponent in scientific notation</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">+</span></tt></td>
<td>Prefix positive exponents with localized plus sign</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">;</span></tt></td>
<td>Separates positive and negative subpatterns</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">%</span></tt></td>
<td>Multiply by 100 and show as percentage</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">‰</span></tt></td>
<td>Multiply by 1000 and show as per mille</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">¤</span></tt></td>
<td>Currency sign, replaced by currency symbol. If doubled,
replaced by international currency symbol. If tripled, uses the
long form of the decimal symbol.</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'</span></tt></td>
<td>Used to quote special characters in a prefix or suffix</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">*</span></tt></td>
<td>Pad escape, precedes pad character</td>
</tr>
</tbody>
</table>
</blockquote>
</blockquote>
</div>
<div class="section">
<h1><a id="parsing-numbers" name="parsing-numbers">2   Parsing Numbers</a></h1>
<p>Babel can also parse numeric data in a locale-sensitive manner:</p>
<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">from</span> <span class="nn">babel.numbers</span> <span class="k">import</span> <span class="n">parse_decimal</span><span class="p">,</span> <span class="n">parse_number</span>
</pre></div>
<p>Examples:</p>
<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parse_decimal</span><span class="p">(</span><span class="s">'1,099.98'</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'en_US'</span><span class="p">)</span>
<span class="go">1099.98</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parse_decimal</span><span class="p">(</span><span class="s">'1.099,98'</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'de'</span><span class="p">)</span>
<span class="go">1099.98</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">parse_decimal</span><span class="p">(</span><span class="s">'2,109,998'</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="s">'de'</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="err">  ...</span>
<span class="err">NumberFormatError: '2,109,998' is not a valid decimal number</span>
</pre></div>
<div class="note">
<p class="first admonition-title">Note</p>
<p class="last">Number parsing is not properly implemented yet</p>
</div>
</div>
    <div id="footer">
      Visit the Babel open source project at
      <a href="http://babel.edgewall.org/">http://babel.edgewall.org/</a>
    </div>
  </div>
</body>
</html>