मेरे पास एक कोड है जो लगता है कि एक मामूली समस्या है जो फ़ाइल को पढ़ता है ... लेकिन मुद्दा यह है कि यह शब्दों/अक्षरों की पहचान नहीं कर सकता है, मेरा मतलब है extract('test.txt',('A','E','I','O','U'))
test.txt
एक txt फ़ाइल है और ('A','E','I','O','U')
वे शब्द हैं जिन्हें मैं खोजना चाहता हूं।
मेरा कोड:
def extract(file,find=()):
with open(str(file),'r') as file:
find = list(find)
read_file = file.readlines()
num1 = 0
num = num1-1
for vals in find:
num1 += 1
pass
for finds in read_file:
linef = str(finds)
main_obj = find[num]
if main_obj in linef:
print("Yay")
elif linef != main_obj:
print("NO")
else:
print("???")
pass
extract('test.txt',('A','E','I','O','U'))
मेरा आउटपुट क्या है:
NO
NO
NO
NO
Yay
यह अपेक्षित आउटपुट है:
Yay
Yay
Yay
Yay
Yay
अंदर test.txt
:
A
E
I
O
U
3 जवाब
मैं इसे यहीं छोड़ता हूँ। यदि अंतिम परिणाम find
के अंदर प्रत्येक चर की तुलना file
की प्रत्येक पंक्ति से करना है तो यह कार्य करना चाहिए:
def extract(file, find=()):
with open(file) as F:
contents = F.readlines()
for line in contents:
if any([i in line for i in find]):
print("Yay")
else:
print("NO")
extract("test.txt", ('A','E','I','O','U'))
आपको बस अपने तर्क को अपडेट करने और इस कोड को हटाने की जरूरत है। क्योंकि यह हर वेतन वृद्धि पर हमेशा -1 सूचकांक लौटाएगा।
num1 = 0
num = num1-1
for vals in find:
num1 += 1
pass
बस एक वेरिएबल का उपयोग करें और उसके अनुसार इसे बढ़ाएँ।
def extract(file, find=()):
num = 0
with open(str(file), 'r') as file:
find = list(find)
print(find)
read_file = file.read().splitlines()
print(read_file)
for finds in read_file:
linef = str(finds)
main_obj = find[num]
num += 1
if main_obj in linef:
print("Yay")
elif linef != main_obj:
print("NO")
else:
print("???")
pass
कोड में:
for finds in read_file:
linef = str(finds)
main_obj = find[num]
if main_obj in linef:
print("Yay")
elif linef != main_obj:
print("NO")
आप कभी भी num
में वृद्धि नहीं करते हैं और इसलिए अनिवार्य रूप से हमेशा find[-1]
की तुलना main_obj
से करते हैं। मुझे लगता है कि अगर कोई मैच है या आपकी आवश्यकता जो भी हो तो आपको num
बढ़ाना होगा।
if main_obj in linef:
num += 1
print("Yay")
किसी भी तरह से, यह आपके लिए आवश्यक कार्यों को करने का सबसे सीधा-साधा सही तरीका होगा:
for temp in find:
not_found = True
for finds in read_files:
if temp in finds:
not_found = False
print("Yay")
break
elif temp != finds:
not_found = True # elif is not needed TBH but just adding for clarity
if not_found:
print("NO")
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।