mirror of
https://github.com/kennethreitz/dive-into-python3.git
synced 2026-06-05 23:10:17 +00:00
move some explanatory stuff to the files chapter
This commit is contained in:
+6
-6
@@ -274,15 +274,15 @@ $ $ s</code></pre>
|
||||
return [matches_rule, apply_rule]
|
||||
|
||||
rules = []
|
||||
<a>with open('plural4-rules.txt') as pattern_file: <span class=u>②</span></a>
|
||||
<a> for line in pattern_file: <span class=u>③</span></a>
|
||||
<a> pattern, search, replace = line.split(None, 3) <span class=u>④</span></a>
|
||||
<a> rules.append(build_match_and_apply_functions( <span class=u>⑤</span></a>
|
||||
<a>with open('plural4-rules.txt', encoding='utf-8') as pattern_file: <span class=u>②</span></a>
|
||||
<a> for line in pattern_file: <span class=u>③</span></a>
|
||||
<a> pattern, search, replace = line.split(None, 3) <span class=u>④</span></a>
|
||||
<a> rules.append(build_match_and_apply_functions( <span class=u>⑤</span></a>
|
||||
pattern, search, replace))</code></pre>
|
||||
<ol>
|
||||
<li>The <code>build_match_and_apply_functions()</code> function has not changed. You’re still using closures to build two functions dynamically that use variables defined in the outer function.
|
||||
<li>The global <code>open()</code> function opens a file and returns a file object. In this case, the file we’re opening contains the pattern strings for pluralizing nouns. The <code>with</code> statement creates what’s called a <i>context</i>: when the <code>with</code> block ends, Python will automatically close the file, even if an exception is raised inside the <code>with</code> block. You’ll learn more about <code>with</code> blocks in the <a href=files.html>Files</a> chapter.
|
||||
<li>The <code>for line in <fileobject></code> idiom reads data from the open file, one line at a time, and assigns the text to the <var>line</var> variable. A “line” of a text file is just what you think it is — a sequence of characters delimited by a carriage return. Of course, it can’t really be that simple, can it? Text files can use several different characters to mark the end of a line. Some use a carriage return character, others use a line feed character, and some use both characters at the end of every line. Python handles all of these cases automatically, so you can say, “Hey, I want to read this text file one line at a time” and it will Just Work. You’ll learn more about reading from and writing to in the <a href=files.html>Files</a> chapter.
|
||||
<li>The global <code>open()</code> function opens a file and returns a file object. In this case, the file we’re opening contains the pattern strings for pluralizing nouns. The <code>with</code> statement creates what’s called a <i>context</i>: when the <code>with</code> block ends, Python will automatically close the file, even if an exception is raised inside the <code>with</code> block. You’ll learn more about <code>with</code> blocks and file objects in the <a href=files.html>Files</a> chapter.
|
||||
<li>The <code>for line in <fileobject></code> idiom reads data from the open file, one line at a time, and assigns the text to the <var>line</var> variable. You’ll learn more about reading from and writing to in the <a href=files.html>Files</a> chapter.
|
||||
<li>Each line in the file really has three values, but they’re separated by whitespace (tabs or spaces, it makes no difference). To split it out, use the <code>split()</code> string method. The first argument to the <code>split()</code> method is <code>None</code>, which means “split on any whitespace (tabs or spaces, it makes no difference).” The second argument is <code>3</code>, which means “split on whitespace 3 times, then discard the rest of the line.” A line like <code>[sxz]$ $ es</code> will be broken up into the list <code>['[sxz]$', '$', 'es']</code>, which means that <var>pattern</var> will get <code>'[sxz]$'</code>, <var>search</var> will get <code>'$'</code>, and <var>replace</var> will get <code>'es'</code>. That’s a lot of power in one little line of code.
|
||||
</ol>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user