gpt4 book ai didi

python - 折叠字符串中连续的字母数字字符

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:40 28 4
gpt4 key购买 nike

我想找到一种优雅而有效的方法,将字符串中由空格分隔的所有连续出现的单个字母数字字符连接成单词。这是我想做的一个例子:

a = 'a b c zzz a yyy a 2 xxx 2 3 wwww a c'

Desired_result = 'abc zzz a yyy a2 xxx 23 wwww ac'

这是我使用循环的结果,但我确信有一些优雅的解决方案。

def myFunc(instring):
b,result = instring.split(),''
for i,row in enumerate(b):
if i==0:
result = row
else:
if len(row) == 1 and len(b[i-1]) == 1 and \
row.isalnum() and b[i-1].isalnum():
result = result + row
else:
result = result + ' ' + row
else:
return result

a = 'a b c zzz a yyy a 2 xxx 2 3 wwww a c'
print myFunc(a)

a_punct = '! @ 23 xxx cv abd $ abcd a c #'
print myFunc(a_punct)

最佳答案

这是一个正则表达式解决方案:

>>> a = 'a b c zzz a yyy a 2 xxx 2 3 wwww a c'
>>> re.sub(r'(?<=\b\w)\s+(?=\w\b)', '', a)
'abc zzz a yyy a2 xxx 23 wwww ac'

它删除前面有单个字母数字字符 (\s+) 和后面有单个字母数字字符 ((?<=\b\w)) 的任何空格 ((?=\w\b))。 \w是字母数字字符或下划线(将其替换为 [a-zA-Z0-9] 仅用于字母数字),并且 \b是一个单词边界,它确保字母数字字符后面/前面没有另一个字符。

关于python - 折叠字符串中连续的字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32527825/

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