如果 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
如果不包含任何字母,我想从字符串中删除行,如果包含字母或数字,则通过。我试图通过在 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