从普通文本中拆分数字和符号
split numbers and symbols from normal text
大家好,我是 java 开发人员,但我是 python 的新手,我有 java 代码,我想翻译成 [=29] =]:
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
你能帮我找到解决办法吗?
试试这个 re.findall 命令,它匹配所有连续的字母和数字(带有可选的 - 或 +)。
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']
没有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
大家好,我是 java 开发人员,但我是 python 的新手,我有 java 代码,我想翻译成 [=29] =]:
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
你能帮我找到解决办法吗?
试试这个 re.findall 命令,它匹配所有连续的字母和数字(带有可选的 - 或 +)。
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']
没有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