Cum pentru a elimina linia dacă nu conține scrisoarea în python

0

Problema

Vreau pentru a elimina linia de șir dacă nu conține nici o scrisoare și să treacă dacă conține litere sau numere. Sunt încearcă să rezolve această problemă prin utilizarea RegEx în python, dar în imposibilitatea de a elimina linie. exemplu

string='''हिरासत में ली गई महिला 36 वर्षीय नूर सजात कमरुज़्ज़मा थीं
          British High Commissioner Greets
          
          पत्ता आंबेडकर चौक, निमशीरगाव,
          निमिशरगाव, निरमशिरगाव, कोल्हापूर, NIMSHIRGAON, Nimshirgaon,
          Address: ambedkar chowk,
          महाराष्ट्र, 416101
          Nimshirgaon, Kolhapur, Maharashtra,
          416101
          1832
          1947'''

Producția vreau

output=  '''British High Commissioner Greets
           Address: ambedkar chowk,
           Nimshirgaon, Kolhapur, Maharashtra,
           416101
           1832
           1947'''

te rog ajuta-ma!!!

data-structures pandas python python-3.x
2021-11-22 11:32:47
2

Cel mai bun răspuns

2

Puteți folosi o simplă înțelegere cu un regex pentru a se potrivi numai linii cu caractere ascii:

import re
out = '\n'.join(s for s in string.split('\n') if re.match(r'^[\x00-\x7F]+$', s))
print(out)

ieșire:

          British High Commissioner Greets
          
          Address: ambedkar chowk,
          Nimshirgaon, Kolhapur, Maharashtra,
          416101
          1832
          1947
2021-11-22 11:53:46
1

Aici te duci. Indiferent de linie nu urmeze modelul (puteți adăuga mai multe caractere în model, în funcție de ceea ce vrei), acesta nu va fi anexată la ieșire.

Cred că acest lucru va rezolva problema ta.

import re

pattern = re.compile("[a-zA-Z0-9!@#$&()\\-`.+,/\"]+")

multilinestring = '''हिरासत में ली गई महिला 36 वर्षीय नूर सजात कमरुज़्ज़मा थीं
British High Commissioner Greets        
पत्ता आंबेडकर चौक, निमशीरगाव,
निमिशरगाव, निरमशिरगाव, कोल्हापूर, NIMSHIRGAON, Nimshirgaon,
Address: ambedkar chowk,
महाराष्ट्र, 416101
Nimshirgaon, Kolhapur, Maharashtra,
416101
1832
1947'''

split_list = multilinestring.splitlines()
output_list = []
for word in split_list:
    if pattern.match(word):
        output_list.append(word)

print(*output_list, sep = "\n")

Ultima linie imprimă în fiecare șir într-o listă pe o linie separată. Aici este rezultatul:

British High Commissioner Greets        
Address: ambedkar chowk,
Nimshirgaon, Kolhapur, Maharashtra,
416101
1832
1947
2021-11-22 12:00:15

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................