如果 python 中不包含字母,如何删除行

How to remove line if doesn't contain letter in python

如果不包含任何字母,我想从字符串中删除行,如果包含字母或数字,则通过。我试图通过在 python 中使用 RegEx 来解决这个问题,但无法删除行。 示例

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

我想要的输出

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

请帮帮我!!!

您可以使用正则表达式的简单理解来仅匹配带有 ascii 字符的行:

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

输出:

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

给你。无论哪一行不符合模式(您可以根据需要在模式中添加更多字符),它都不会附加到输出中。

我想这会解决你的问题。

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")

最后一行在单独的行上打印列表中的每个字符串。 这是输出:

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