<p>解释如下:</p>
<pre><code>with open("test.txt", "r") as f:
lines = f.readlines()
stripped_lines = [line.strip() for line in lines]
words = ["number1", "number2", "time"]
for a_line in stripped_lines:
for word in words:
if word in a_line:
number = a_line.split()[1]
print(number)
</code></pre>
<p>1)首先“rb”给出bytes对象,即返回<code>b'number1 234'</code>之类的内容,使用“r”获取string对象。你知道吗</p>
<p>2)你读到的行是这样的,它将存储在一个列表中。你知道吗</p>
<p><code>['number1 234\r\n', 'number2 12\r\n', '\r\n', 'time 3:44']</code></p>
<p>注意<code>\r\n</code>它们指定您有一个换行符。要删除,请使用<code>strip()</code>。你知道吗</p>
<p>3)从<code>stripped_lines</code>取每个<code>line</code>,从<code>words</code>取每个<code>word</code>
并使用<code>in</code>检查该单词是否出现在该行中。你知道吗</p>
<p>4)<code>a_line</code>应该是<code>number1 234</code>,但我们只需要数字部分。所以<code>split()</code>
结果是</p>
<p><code>['number1','234']</code>和<code>split()[1]</code>表示索引1处的元素。(第二个元素)。你知道吗</p>
<p>5)还可以使用<code>your_string.isdigit()</code>检查字符串是否为数字</p>
<p><strong>更新:</strong><strong><em>自从您更新了您的问题和输入文件后,此操作正常:</em></strong></p>
<pre><code>import time
def isTimeFormat(input):
try:
time.strptime(input, '%H:%M')
return True
except ValueError:
return False
with open("test.txt", "r") as f:
lines = f.readlines()
stripped_lines = [line.strip() for line in lines]
words = ["number1", "number2", "time"]
for a_line in stripped_lines:
for word in words:
if word in a_line:
number = a_line.split()[-1] if (a_line.split()[-1].isdigit() or isTimeFormat(a_line.split()[-1])) else a_line.split()[-2]
print(number)
</code></pre>
<p>为什么是<code>isTimeFormat()</code>函数?你知道吗</p>
<pre><code>def isTimeFormat(input):
try:
time.strptime(input, '%H:%M')
return True
except ValueError:
</code></pre>
<p>检查3:44或4:55是时间格式。因为你也把它们当作价值观。
最终输出:</p>
<pre><code>234
12
3:44
</code></pre>