如何删除字符串中的空格和行?

2024-10-05 11:07:38 发布

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

这就是我所拥有的

S = """Missing Since 06/01/1976

Missing From 
                                Napa,                               California                          
Classification Endangered Missing
Sex Female
Race 
                                    White
Date of Birth 02/06/1957 (63)
Age 19 years old
Height and Weight 5'2, 130 pounds
Distinguishing Characteristics Caucasian female. Brown hair, hazel eyes."""

我想去那里

S = """Missing Since 06/01/1976
Missing From Napa,California                            
Classification Endangered Missing
Sex Female
Race White
Date of Birth 02/06/1957 (63)
Age 19 years old
Height and Weight 5'2, 130 pounds
Distinguishing Characteristics Caucasian female. Brown hair, hazel eyes."""

我尝试使用S.strip(),但只删除了开头和结尾的空格

我想知道是否有任何可以工作的实现(我找不到)

我也试着用S.replace(" ","")来处理更大的空间,但这也没用


Tags: offromagedatefemalebirthclassificationwhite
3条回答

删除多个空格(不是行):

print( ' '.join([s for s in S.split(' ') if s.strip()]) )

以下是一种仅使用字符串文字输入(最初)生成请求的字符串文字输出的方法:

from re import sub

print(sub('Race\n', 'Race ',
          sub('Missing From\n', 'Missing From ', '\n'.join(
              [sub(' \s', '', line) for line in [line.strip() for line in """
"Missing Since 06/01/1976

Missing From
                                Napa,                               California
Classification Endangered Missing
Sex Female
Race
                                    White
Date of Birth 02/06/1957 (63)
Age 19 years old
Height and Weight 5'2, 130 pounds
Distinguishing Characteristics Caucasian female. Brown hair, hazel eyes."
""".split('\n') if line.strip()]]))))

输出:

"Missing Since 06/01/1976
Missing From Napa, California
Classification Endangered Missing
Sex Female
Race White
Date of Birth 02/06/1957 (63)
Age 19 years old
Height and Weight 5'2, 130 pounds
Distinguishing Characteristics Caucasian female. Brown hair, hazel eyes."

试试这个:

import re


def normalize_text(get_text):
    saved_new_lines = []
    counter = 0
    for each_line in get_text.split("\n"):
        if not each_line == "":
            normalize_each_line = re.sub(r'\s+', ' ', each_line.strip())
            if each_line.startswith(" "):
                saved_new_lines[counter-1] += " " + normalize_each_line
            else:
                saved_new_lines.append(normalize_each_line)
                counter += 1
    return "\n".join(saved_new_lines)


print(normalize_text(S))

输出:

Missing Since 06/01/1976
Missing From Napa, California
Classification Endangered Missing
Sex Female
Race White
Date of Birth 02/06/1957 (63)
Age 19 years old
Height and Weight 5'2, 130 pounds
Distinguishing Characteristics Caucasian female. Brown hair, hazel eyes.

@FedericoBaù给了我暗示;所以我更新了我的代码(这个版本没有任何空行检查器,所以它将比当前状态快得多)

更新:

import re


def normalize_text(get_text):
    saved_new_lines = []
    counter = 0
    for each_line in re.sub(r'\n+', '\n', get_text.strip()).splitlines():
        normalize_each_line = re.sub(r'\s+', ' ', each_line.strip())
        if each_line.startswith(" "):
            saved_new_lines[counter-1] += " {}".format(normalize_each_line)
        else:
            saved_new_lines.append(normalize_each_line)
            counter += 1
    return "\n".join(saved_new_lines)


print(normalize_text(test_string))

相关问题 更多 >

    热门问题