分离数字和符号从普通文字

2024-10-02 22:37:51 发布

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

大家好,我是一名java开发人员,但我是python的新手,我想用python翻译java代码:

    private static String split(String str) {
        List<String> output = new ArrayList<String>();
        Matcher match = Pattern.compile("[0-9,+]+|[a-z]+|[A-Z]").matcher(str);
        while (match.find()) {
            output.add(match.group());
        }
        String result="";
        for (String s:output){
            result+=s+" ";
        }
        return result;
    }

例如,如果输入为:“aaaa+1”,则输出为:“aaaa+1”。你知道吗

我已经试过使用:

def split(nome):
    r = re.findall('\d+|.\D+', nome)
    #m = r.match(nome)
    print(r)

但没有考虑符号(+)。你知道吗

以下是其他示例:

auhsuahsAsaasaA+19090 ---> auhsuahsAsaasaA +19090 
+67433998AAAAAAA ---> +67433998 AAAAAAA
ARENA-89         ---> ARENA -89

你能帮我找到解决办法吗?你知道吗


Tags: 代码outputstring开发人员matchjavaresultprivate
2条回答

没有re模块
你知道吗

def divide(text):
    local_text=list(text)
    for i in range(1, len(local_text)):
        if local_text[i].isspace() or local_text[i-1].isspace():
            continue
        elif local_text[i-1].isalpha() != local_text[i].isalpha():
            local_text[i-1] += ' '
    return ''.join(local_text)

print(divide('auhsuahsAsaasaA+19090 +67433998AAAAAAA ARENA-89'))
...
auhsuahsAsaasaA +19090 +67433998 AAAAAAA ARENA -89

试试这个关于芬德尔与所有连续字母和数字匹配的命令(带可选-或+)。你知道吗

 re.findall(r'[A-Za-z]+|[+-]?\d+', s)

示例:

>>> import re
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', '"AAAA +2"')
['AAAA', '+2']
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', 'auhsuahsAsaasaA+19090')
['auhsuahsAsaasaA', '+19090']
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', '"AAAA +2"')
['AAAA', '+2']

相关问题 更多 >