首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何去除ascii和nonascii字符之间的空白?

如何去除ascii和nonascii字符之间的空白?
EN

Stack Overflow用户
提问于 2022-09-16 22:16:49
回答 2查看 61关注 0票数 1

例如:

代码语言:javascript
复制
import re

s1 = 'LOGO 设计'
## s2 = '设计 LOGO'

s = re.sub('[a-zA-Z0-9]{3,}(\s)[^a-zA-Z0-9]', '', s1)

print(s)

我希望找到至少3个ascii字符,然后是一个空格,然后是非ascii字符,然后用空字符串替换空白。我的代码有两个问题:

  1. 如何编写(\s)的替换字符串?

  1. 如何使它也适用于s2的相反顺序?:

^a-zA-Z0-9

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-16 22:29:17

将希望保留在捕获组中的字符串放在捕获组中,然后在替换中引用它们。

代码语言:javascript
复制
s = re.sub(r'([a-zA-Z0-9]{3})\s([^a-zA-Z0-9])', r'\1\2', s1)

您不需要使用{3,},您可以只使用{3}。这将将最后3个字符复制到结果中。默认情况下,所有前面的字符都将被复制,因为它们没有被替换。

您还可以通过匹配前面有3个ASCII字符和一个非ASCII字符的空格来完成这一任务。然后用空字符串替换空格。

代码语言:javascript
复制
s = re.sub(r'(?<=[a-zA-Z0-9]{3})\s(?=[^a-zA-Z0-9])', '', s1)

您可以在此方法中使用替代方法来匹配这两个订单。

代码语言:javascript
复制
s = re.sub(r'(?<=[a-zA-Z0-9]{3})\s(?=[^a-zA-Z0-9])|(?<=[^a-zA-Z0-9])\s(?=[a-zA-Z0-9]{3})', '', s1)
代码语言:javascript
复制
票数 1
EN

Stack Overflow用户

发布于 2022-09-17 00:40:58

向前看和向后看

代码语言:javascript
复制
s1 = 'LOGO 设计 SKY  आकाश'

st = re.split(r'(?<=[^a-zA-Z])(?=[a-zA-Z])',s1)

[re.sub(r'\s+','',e) for e in st]

['LOGO设计', 'SKYआकाश']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73750769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档