擅长:python、mysql、java
<p>您有名字和姓氏,因此可以创建这样的模式<code>r'Adam\s+Smith\s+'</code>,但是假设名字可以有多个单词。你知道吗</p>
<p>为了处理这个问题,我们知道名字的<code>length</code>是<code>16</code>,姓氏是<code>16</code>,生日是<code>8</code>,我们可以通过切片或正则表达式提取这些信息:</p>
<pre class="lang-py prettyprint-override"><code>import re
FIRST_NAME = 'Adam'
LAST_NAME = 'Smith'
P = 'data.txt'
B = '11111900'
# if every record is in one line do this is better
with open(P, 'r') as readable_file1:
records = readable_file1.readlines()
with open(P, 'w') as writable_file1:
for record in records:
# you can do by slicing like you did
info = re.search('(.{16})(.{16})(.{8})', record)
if info:
first_name, last_name, birthday = info.groups()
if first_name.strip() == FIRST_NAME and last_name.strip() == LAST_NAME:
print('Record to update: ', record)
record = record[:32] + B + '\n'
writable_file1.write(record)
</code></pre>