<p>正如我在评论中提到的,您可以使用<a href="https://docs.python.org/3/library/re.html" rel="nofollow noreferrer">regular expressions</a>来匹配您要查找的模式。您可以在模式中指定<em>组</em>(使用<code>(</code>…<code>)</code>或<code>(?P<</code><em>name</em>…<code>)</code>)来标识模式的部分,并专门替换或重用这些部分。在</p>
<p>这样的方法应该有效:</p>
<pre><code>import re
pattern = (r'^' # The beginning of a line.
# Match something that looks like a number:
r'-?' # 1. Optional: a negative sign.
r'\d+' # 2. One or more digits.
r'([.]\d+)?' # 3. Optional: a decimal point followed by one
# or more digits.
# The rest of the line:
r'(?P<rest>'
r'\s+' # 1. One or more spaces.
r'abc' # 2. "abc"
r'\s+' # 3. One or more spaces.
r'.*' # 4. Everything remaining.
r')'
r'$') # The end of a line.
# Replace the above pattern with "2.0" followed by whatever we identified
# as "the rest of the line".
replacement = '2.0\g<rest>'
with open('sample_file.txt','r') as file:
filedata = file.read()
# re.MULTILINE is needed to treat lines separately.
filedata = re.sub(pattern, replacement, filedata, flags=re.MULTILINE)
with open('sample_file.txt','w') as file:
file.write(filedata)
</code></pre>
<p>不使用正则表达式的另一种(未经测试)方法:</p>
^{pr2}$
<p>请注意,这与正则表达式(RegularExpression,RE)方法不完全相同(显著的区别是它将接受任何浮点数作为第一个标记(例如<code>1e-10</code>),并且在执行替换后它不会保留空格),但是如果您不熟悉REs,则可能会更容易理解</p>