Dalam Proyek saya, saya ingin mengekstrak daftar tugas dari file teks. Inilah kemajuan saya sejauh ini.

Ini adalah isi dari file teks todolist.txt

#TODO:example4
def printName():
    name=input("Enter your name: ")
    print("Hello " + name)
 TODO:example3
def printNumbers():
    for i in range (0,10):#TODO:example2
        print(i)


printName()
printNumbers()
#TODO: example1

Dan ini kode Python saya untuk mengekstraksi baris dengan TODO:

file=open("todolist.txt","r")

word="TODO:"

for line in file:
    if word in line:
        print(line)

Dan ketika saya menjalankan program ini hasilnya adalah:

#TODO:example4

 TODO:example3

    for i in range (0,10):#TODO:example2

#TODO: example1


Process finished with exit code 0

Jadi masalah saya di sini saya ingin mengekstrak dan mencetak baris TODO hanya tetapi seperti yang Anda lihat dari atas, untuk #TODO:example2 program saya mencetak kode sebelumnya pada spesifik itu garis juga.

Yang ingin saya lakukan pada dasarnya hanya mencetak komentar TODO.

1
onur cevik 9 Agustus 2017, 16:31

2 jawaban

Jawaban Terbaik

Anda dapat membagi baris dengan 'TODO' lalu mendapatkan item terakhir.

word="TODO:"
with open("todolist.txt") as file:    
    for line in file:
        if word in line:
            print("#TODO:" + line.split(word)[-1])
2
Lafexlos 9 Agustus 2017, 13:38

Anda dapat menggunakan ekspresi reguler:

import re

with open("todolist.txt") as f:
    file_content = f.read()

print(re.findall(r'^\s*#TODO:.+$', file_content, re.MULTILINE))

# ['#TODO:example4', '#TODO: example1']

'^\s*#TODO:.+$' akan cocok dengan setiap baris yang:

  • dimulai dengan sejumlah spasi (0 atau lebih)
  • berisi #TODO diikuti oleh apapun (1 atau lebih)
  • tidak mengandung apa-apa lagi
0
DeepSpace 9 Agustus 2017, 13:38