Saya menggunakan Python untuk mencari file teks besar untuk string tertentu, di bawah string adalah data yang saya minati untuk melakukan analisis data.

def my_function(filename, variable2, variable3, variable4):
array1 = []

with open(filename) as a:
    special_string = str('info       %d        info =*' %variable3)
    for line in a:
        if special_string == array1:
            array1 = [next(a) for i in range(9)]
            line = next(a)    
            break
        elif special_string != c:
            c = line.strip()

Dalam variabel special_string, apa pun yang muncul setelah info = dapat bervariasi, jadi saya mencoba menempatkan operator wildcard seperti yang terlihat di atas. Satu-satunya cara saya bisa menjalankan fungsi adalah jika saya memasukkan string yang tepat yang ingin saya cari, termasuk semuanya setelah tanda sama dengan sebagai berikut:

special_string = str('info         %d       info = more_stuff' %variable3)

Bagaimana saya bisa menetapkan operator wildcard ke string lainnya untuk membuat fungsi saya lebih kuat?

0
Bogdan Janiszewski 17 Agustus 2017, 22:41

2 jawaban

Jawaban Terbaik

Jika string khusus Anda selalu muncul di awal baris, maka Anda dapat menggunakan tanda centang di bawah ini (di mana special_string tidak memiliki * pada akhirnya):

line.startswith(special_string)

Jika tidak, harap lihat modul re di pustaka standar untuk bekerja dengan ekspresi reguler.

1
motjuste 17 Agustus 2017, 20:14

Pernahkah Anda berpikir untuk menggunakan sesuatu seperti ini? Berdasarkan masukan Anda, saya berasumsi sebagai berikut:

variable3 = 100000
special_string = str('info         %d       info = more_stuff' %variable3)

import re
pattern = re.compile('(info\s*\d+\s*info\s=)(.*)')
output = pattern.findall(special_string)
print(output[0][1])

Yang akan kembali:

more_stuff
1
Carlos 17 Agustus 2017, 20:13