Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python: नेस्टेड सूची से स्पेस-रहित स्ट्रिंग वाली पंक्तियाँ फ़िल्टर करना

Python में नेस्टेड सूची (स्ट्रिंग्स की सूची की सूची) से उन पंक्तियों को फ़िल्टर करना जिनमें कोई भी स्ट्रिंग स्पेस नहीं रखती। इसके लिए रेगुलर एक्सप्रेशन और any()/all() का उपयोग किया जाता है।

समस्या

दिया गया: [["python is", "fun"], ["python", "good"], ["python is cool"], ["love", "python"]]

निकालें: वे पंक्तियाँ जहां किसी भी स्ट्रिंग में स्पेस न हो।

उदाहरण

import re

my_list = [["python is", "fun"], ["python", "good"], ["python is cool"], ["love", "python"]]
print("मूल सूची:", my_list)

# विधि 1: re.search + any + not (मूल लेख)
my_result = [
    row for row in my_list 
    if not any(bool(re.search(r"\s", element)) for element in row)
]
print("परिणाम (re + any):", my_result)

# विधि 2: str.isspace() या ' ' in string (सरल, तेज़)
my_result2 = [
    row for row in my_list 
    if not any(' ' in element for element in row)
]
print("परिणाम (' ' in):", my_result2)

# विधि 3: all() + str.isalpha() या कस्टम जांच
# यदि केवल अल्फान्यूमेरिक बिना स्पेस चाहिए
my_result3 = [
    row for row in my_list 
    if all(element.replace(' ', '').isalnum() and ' ' not in element for element in row)
]
print("परिणाम (isalnum + no space):", my_result3)

आउटपुट

मूल सूची: [['python is', 'fun'], ['python', 'good'], ['python is cool'], ['love', 'python']]
परिणाम (re + any): [['python', 'good'], ['love', 'python']]
परिणाम (' ' in): [['python', 'good'], ['love', 'python']]
परिणाम (isalnum + no space): [['python', 'good'], ['love', 'python']]

व्याख्या

पंक्तिस्ट्रिंग्सस्पेस है?शामिल?
["python is", "fun"]"python is" (स्पेस), "fun"हांनहीं
["python", "good"]"python", "good"नहींहां
["python is cool"]"python is cool" (स्पेस)हांनहीं
["love", "python"]"love", "python"नहींहां

रेगुलर एक्सप्रेशन विवरण

  • r"\s": कोई भी व्हाइटस्पेस कैरेक्टर (स्पेस, टैब, न्यूलाइन, आदि)
  • r" ": केवल स्पेस कैरेक्टर
  • re.search(): स्ट्रिंग में कहीं भी पैटर्न खोजता है
  • bool(): मैच ऑब्जेक्ट को बूलियन में बदलता है

फंक्शन के रूप में

def filter_rows_without_spaces(nested_list, check_all_whitespace=True):
    """
    उन पंक्तियों को फ़िल्टर करें जिनमें कोई स्पेस/व्हाइटस्पेस न हो
    
    Args:
        nested_list: स्ट्रिंग्स की सूची की सूची
        check_all_whitespace: True=कोई भी व्हाइटस्पेस (\s), False=केवल स्पेस (' ')
    """
    if check_all_whitespace:
        pattern = r"\s"
        checker = lambda s: bool(re.search(pattern, s))
    else:
        checker = lambda s: ' ' in s
    
    return [row for row in nested_list if not any(checker(elem) for elem in row)]

# उपयोग
data = [["python is", "fun"], ["python", "good"], ["python is cool"], ["love", "python"]]
print("कोई व्हाइटस्पेस नहीं:", filter_rows_without_spaces(data, True))
print("केवल स्पेस नहीं:", filter_rows_without_spaces(data, False))

# टैब, न्यूलाइन टेस्ट
data2 = [["hello\tworld"], ["hello\nworld"], ["hello world"], ["helloworld"]]
print("व्हाइटस्पेस टेस्ट:", filter_rows_without_spaces(data2, True))   # [['helloworld']]
print("स्पेस टेस्ट:", filter_rows_without_spaces(data2, False))       # [['hello\tworld'], ['hello\nworld'], ['helloworld']]

Pandas DataFrame में उपयोग

import pandas as pd

df = pd.DataFrame({
    'text1': ['python is', 'python', 'python is cool', 'love'],
    'text2': ['fun', 'good', None, 'python']
})
print("DataFrame:\n", df)

# किसी भी कॉलम में स्पेस वाली पंक्तियाँ हटाएं
mask = df.applymap(lambda x: isinstance(x, str) and ' ' not in x).all(axis=1)
filtered = df[mask]
print("\nकोई स्पेस नहीं वाली पंक्तियाँ:\n", filtered)

विविधताएं

1. कम से कम एक स्ट्रिंग बिना स्पेस वाली पंक्तियाँ रखें

# कम से कम एक एलिमेंट बिना स्पेस
at_least_one = [row for row in my_list if any(' ' not in elem for elem in row)]
print("कम से कम एक बिना स्पेस:", at_least_one)
# सभी पंक्तियाँ क्योंकि प्रत्येक में कम से कम एक बिना-स्पेस स्ट्रिंग है

2. विशिष्ट व्हाइटस्पेस कैरेक्टर्स जांचें

import string

# केवल स्पेस और टैब
whitespace_chars = ' \t'
result = [row for row in my_list if not any(c in elem for elem in row for c in whitespace_chars)]

# string.whitespace में सभी: ' \t\n\r\x0b\x0c'
result_all = [row for row in my_list if not any(c in elem for elem in row for c in string.whitespace)]
  1. - पायथन में स्ट्रिंग की सूची को सॉर्ट करना

    इस ट्यूटोरियल में, हम स्ट्रिंग की सूची को सॉर्ट करना देखेंगे। हम दी गई स्ट्रिंग की सूची को sort मेथड और sorted फ़ंक्शन से सॉर्ट करेंगे। और फिर हम देखेंगे कि स्ट्रिंग की सूची को लंबाई, मान आदि जैसे विभिन्न मानदंडों के आधार पर कैसे सॉर्ट किया जाए। आइए देखते हैं कि list.sort() मेथड का उपयोग करके स्ट्र

  1. - Python में टपल्स की सूची को स्ट्रिंग्स की सूची में बदलें

    Python का उपयोग करके डेटा प्रोसेसिंग के दौरान, हम एक ऐसी सूची का सामना कर सकते हैं जिसके तत्व टपल्स हैं। और फिर हमें टपल्स को स्ट्रिंग्स की सूची में बदलने की आवश्यकता हो सकती है।join के साथjoin() एक स्ट्रिंग लौटाता है जिसमें अनुक्रम के तत्वों को str सेपरेटर द्वारा जोड़ा गया है। हम इस फंक्शन को पैराम

  1. - पायथन में स्ट्रिंग्स की सूची को कैसे सॉर्ट करें?

    किसी सूची को इन-प्लेस सॉर्ट करने के लिए, यानी सूची को स्वयं सॉर्ट करना और उस सूची में क्रम को बदलना, आप स्ट्रिंग्स की सूची पर sort() का उपयोग कर सकते हैं। उदाहरण के लिए, >>> a = [Hello, My, Followers] >>> a.sort() >>> print(a) [Followers, Hello, My] यदि आप मूल सूची को बरकर