Python删除空字符串,strip()不执行

2024-09-30 10:40:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python3.8.0中工作,我想删除以小写字母开头的字符串它确实有效只有那些字符串是空的,而那些我不能删除的空字符串。我试过剥去它,它的工作,但不是为空字符串。 我的代码在下面

gezegdes_file = open(gezegdes_betekenis, 'r')
content = gezegdes_file.readlines()
gezegdes_file.close()
gezegdes_opgeschoond = open('gezegdes_opgeschoond.txt', 'w')
for rule in content:
    rule = rule.replace(rule.lower(), ' ').strip()
    # rule = "".join([s for s in rule.strip().splitlines(True) if s.strip("\r\n")])
    rule = rule.replace('ij', 'y')
    # rule = rule.replace('\n\n','\n').replace('\n\n','\n')
    rule = rule.replace('.', '').replace('!', '').replace('?', '').upper()
    print(rule)
    gezegdes_opgeschoond.write(str(rule) + '\n')
gezegdes_opgeschoond.close()

我试着替换规则.下通过空字符串,它的工作,但我不能删除空字符串。 以下代码的结果

AAN DE RAND VAN HET RAVYN BLOEIEN DE MOOISTE BLOEMEN
AAN DE VEREN KENT MEN DE VOGEL
AAN DE VRUCHTEN KENT MEN DE BOOM
AAP WAT HEB JE MOOIE JONGEN
ACHTER DE WOLKEN SCHYNT DE ZON
AL DOENDE LEERT MEN
AL IS DE LEUGEN NOG ZO SNEL, DE WAARHEID ACHTERHAALT HAAR WEL
ALLE GEKHEID OP EEN STOKJE
ALLE HENS AAN DEK
ALLE HOUT IS GEEN TIMMERHOUT
ALLE WEGEN LEIDEN NAAR ROME

ALS APEN HOGER KLIMMEN WILLEN, ZIET MEN GAUW HUN BLOTE BILLEN

最后两个句子之间有一条白线,最后两行之间有一个以小写字母开头的字符串,所有以小写字母开头的字符串都必须删除。 文件很长,文件中有几行是这样的空行,因为我必须删除以小写字母开头的字符串。 去除最后两句之间的白线有什么办法?你知道吗


Tags: 字符串代码deopencontentrulereplacefile
1条回答
网友
1楼 · 发布于 2024-09-30 10:40:30

一种方法是简单地跳过一个空行开始,这样你就可以像这样简化你的循环:

gezegdes_file = open(gezegdes_betekenis, 'r')
content = gezegdes_file.readlines()
gezegdes_file.close()
gezegdes_opgeschoond = open('gezegdes_opgeschoond.txt', 'w')
for rule in content:
    if not rule:  # if it's an empty string, skip everything
        continue
    rule = rule.replace(rule.lower(), ' ').strip()
    # rule = "".join([s for s in rule.strip().splitlines(True) if s.strip("\r\n")])
    rule = rule.replace('ij', 'y')
    # rule = rule.replace('\n\n','\n').replace('\n\n','\n')
    rule = rule.replace('.', '').replace('!', '').replace('?', '').upper()
    print(rule)
    gezegdes_opgeschoond.write(str(rule) + '\n')
gezegdes_opgeschoond.close()

如果您有一些与rule == ''稍有不同的地方,可以调整测试行,但这应该会给您一个想法。你知道吗

编辑

正如@khelwood所表明的,可能存在这样一种情况:在运行所有这些替换之后,我们可能会得到一个空行,因此将末尾的if语句检查(或者另外)移到替换块会更安全。我选择向下移动。在这种情况下,如果rule不是空的,我们将打印并写入它。你知道吗

gezegdes_file = open(gezegdes_betekenis, 'r')
content = gezegdes_file.readlines()
gezegdes_file.close()
gezegdes_opgeschoond = open('gezegdes_opgeschoond.txt', 'w')
for rule in content:
    rule = rule.replace(rule.lower(), ' ').strip()
    # rule = "".join([s for s in rule.strip().splitlines(True) if s.strip("\r\n")])
    rule = rule.replace('ij', 'y')
    # rule = rule.replace('\n\n','\n').replace('\n\n','\n')
    rule = rule.replace('.', '').replace('!', '').replace('?', '').upper()

    if rule:  # if it's not an empty string, then print/write
        print(rule)
        gezegdes_opgeschoond.write(str(rule) + '\n')
gezegdes_opgeschoond.close()

相关问题 更多 >

    热门问题