gpt4 book ai didi

c++ - Pythonic方式重写以下C++字符串处理代码

转载 作者:太空狗 更新时间:2023-10-29 23:31:32 25 4
gpt4 key购买 nike

以前,我有一个能够执行此操作的 C++ 字符串处理代码。

input -> Hello 12
output-> Hello

input -> Hello 12 World
output-> Hello World

input -> Hello12 World
output-> Hello World

input -> Hello12World
output-> HelloWorld

C++代码如下。

std::string Utils::toStringWithoutNumerical(const std::string& str) {
std::string result;

bool alreadyAppendSpace = false;
for (int i = 0, length = str.length(); i < length; i++) {
const char c = str.at(i);
if (isdigit(c)) {
continue;
}
if (isspace(c)) {
if (false == alreadyAppendSpace) {
result.append(1, c);
alreadyAppendSpace = true;
}
continue;
}
result.append(1, c);
alreadyAppendSpace = false;
}

return trim(result);
}

请问在 Python 中,实现此类功能的 Pythonic 方式是什么?正则表达式能做到吗?

谢谢。

最佳答案

编辑:这比以前的版本更准确地再现了 C++ 代码的功能。

s = re.sub(r"\d+", "", s)
s = re.sub(r"(\s)\s*", "\1", s)

特别是,如果连续几个空格中的第一个空格是一个制表符,它将保留该制表符。

进一步编辑:无论如何要用空格替换,这是可行的:

s = re.sub(r"\d+", "", s)
s = re.sub(r"\s+", " ", s)

关于c++ - Pythonic方式重写以下C++字符串处理代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com