मेरे पास दो टैब-सीमांकित फ़ाइलें हैं, और मुझे दूसरी फ़ाइल में सभी पंक्तियों के विरुद्ध पहली फ़ाइल में प्रत्येक पंक्ति का परीक्षण करने की आवश्यकता है।केवल एक नेस्टेड लूप को तोड़ने के लिए कैसे करें
row1 c1 36 345 A
row2 c3 36 9949 B
row3 c4 36 858 C
करें 2:
row1 c1 3455 3800
row2 c3 6784 7843
row3 c3 10564 99302
row4 c5 1405 1563
चलो कहते हैं कि मैं (file1) जिसके लिए कर्नल [3] file1 की तुलना में छोटी है में उत्पादन सभी पंक्तियों करना चाहते हैं उदाहरण के लिए,
file1 के लिए फ़ाइल 2 के किसी भी (नहीं) कॉल [2], यह देखते हुए कि कोल [1] वही हैं।
अपेक्षित उत्पादन:
row1 c1 36 345 A
row2 c3 36 9949 B
जब से मैं Ubuntu में काम कर रहा हूँ, मैं इनपुट आदेश इस तरह दिखना चाहते हैं:
import sys
filename1 = sys.argv[1]
filename2 = sys.argv[2]
file1 = open(filename1, 'r')
file2 = open(filename2, 'r')
done = False
for x in file1.readlines():
col = x.strip().split()
for y in file2.readlines():
col2 = y.strip().split()
if col[1] == col2[1] and col[3] < col2[2]:
done = True
break
else: continue
print x
:
python code.py [file1] [file2] > [output]
मैं निम्नलिखित कोड लिखा था
हालांकि, आउटपुट इस तरह दिखता है:
row2 c3 36 9949 B
यह बड़े डेटासेट के लिए स्पष्ट है, लेकिन मूल रूप से मुझे हमेशा केवल अंतिम पंक्ति मिलती है जिसके लिए नेस्टेड पाश में स्थिति सत्य थी। मुझे संदेह है कि "ब्रेक" मुझे दोनों लूपों से बाहर तोड़ रहा है। मैं जानना चाहता हूं (1) लूप के लिए केवल एक में से कैसे बाहर निकलना है, और (2) अगर यह एकमात्र समस्या है जो मुझे यहां मिली है।
'ब्रेक' केवल आपको सबसे कम लूप से बाहर तोड़ देता है। –
संबंधित: [दो फाइलों की तुलना करें और एक नई फाइल को लिखें लेकिन केवल कुछ लाइनों को आउटपुट करें?] (Http://stackoverflow.com/questions/18514979/compare-two-files-and-write-to-a-new- फ़ाइल बल्कि केवल-उत्पादन-ए-कुछ लाइनों) –