説明:
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)
1)すべての「RB」の最初のバイトがb'number1 234'
のようなすなわち何かが文字列オブジェクトを取得するための使用は「r」に返されるオブジェクトを提供します。
2)あなたが読んだ行は、このようなものになり、リストに格納されます。
['number1 234\r\n', 'number2 12\r\n', '\r\n', 'time 3:44']
お知らせ\r\n
ものは、あなたが改行を持っていることを指定します。使用を取り除くにはstrip()
。
3)stripped_lines
から各line
を取り、各word
words
からを取ると、その単語がin
を使用して、その行に存在しているかどうかを確認します。
4)a_line
はnumber1 234
となりますが、数字の部分だけが必要です。だからのsplit()
出力は
['number1','234']
とsplit()[1]
だろうインデックス1(第2要素)の要素を意味します。
5)文字列がyour_string.isdigit()
UPDATE使って数字である場合にも確認できます。あなたの質問と入力ファイルを更新しているので、これは動作します:
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)
なぜこれをisTimeFormat()
機能?
def isTimeFormat(input):
try:
time.strptime(input, '%H:%M')
return True
except ValueError:
3:44または4:55が時間形式であるかどうかをチェックします。あなたも値として考えているからです。 最終出力:
234
12
3:44
あなたの答えに感謝します。私はあなたの提案に基づいて私自身の答えを書いた。 'isTimeFormat'については、値を文字列として取得し、データベースに保存することを好みます。 – Fang