मैं एक फ़ाइल है कि input.txt कहा जाता है कहते हैं यहफ़ाइल से अमिश्रित नंबर निकालें
I listened to 4 u2 albums today
meet me at 5
squad 4ever
मैं नंबर होते हैं जो अपने दम पर कर रहे हैं बाहर फ़िल्टर करना चाहते हैं, तो "4" और "5" चाहिए की तरह दिखता है जाओ लेकिन "यू 2" और "4ever" वही रहना चाहिए। यानी उत्पादन होना चाहिए
I listened to u2 albums today
meet me at
squad 4ever
मैं इस कोड
for line in fileinput.input("input.txt", inplace=True):
new_s = ""
for word in line.split(' '):
if not all(char.isdigit() for char in word):
new_s += word
new_s += ' '
print(new_s, end='')
कौन सा सुंदर कोड मैं यहां पाया के समान है का उपयोग करने की कोशिश कर रहा है: Removing numbers mixed with letters from string
लेकिन वांछित उत्पादन के बजाय मुझे
I listened to u2 albums today
meet me at 5
squad 4ever
जैसा कि आप देख सकते हैं कि यहां दो समस्याएं हैं, पहले केवल पहली पंक्ति उस अंक को खो देती है जिसे मैं खोना चाहता हूं, "5" अभी भी दूसरी पंक्ति में मौजूद है। दूसरी समस्या एक नई लाइन की शुरुआत में अतिरिक्त सफेद जगह है।
मैं थोड़ी देर के लिए कोड के साथ खेल रहा हूं और स्टैक ओवरफ्लो ब्राउज़ कर रहा हूं, लेकिन यह नहीं पता कि समस्या कहां से आ रही है। कोई अंतर्दृष्टि?
समस्या यह है कि लाइन पर अंतिम शब्द '\ n' के साथ समाप्त होता है। यह एक अंक नहीं है, इसलिए यह if स्टेटमेंट पास करता है, और अतिरिक्त स्थान इसलिए है क्योंकि आप प्रत्येक बार लूप के लिए एक स्थान जोड़ते हैं, जिसमें लाइन पर अंतिम शब्द भी शामिल है। – yinnonsanders