首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非ASCII字符的Regex模式

非ASCII字符的Regex模式
EN

Stack Overflow用户
提问于 2019-08-04 18:41:31
回答 2查看 96关注 0票数 0

问题摘要

我有以下regex python代码:

在……里面

代码语言:javascript
复制
lst =[' ', 'US$170.8980\xa0billion', '[2]', '\xa0(2018)']
for i in lst:
    pat = re.compile(r'([\x1F-\x7F]+).+(\d+)')
    results=pat.search(i)
    print(results)

我用我的正则表达式得到了这个输出:

输出

代码语言:javascript
复制
None
<_sre.SRE_Match object; span=(0, 11), match='US$170.8980'>
None
<_sre.SRE_Match object; span=(1, 6), match='(2018'>

期望输出

理想情况下,我希望得到这个输出:

代码语言:javascript
复制
[US$170.8980-billion-(2018)]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-04 19:31:04

这对我来说很管用:

代码语言:javascript
复制
string = 'US$170.8980\xa0billion'
pat = ''.join(re.findall('([a-zA-Z0-9$.])', string))

适配

代码语言:javascript
复制
lst = [' ', 'US$170.8980\xa0billion', '[2]', '\xa0(2018)']
for i in lst:
    pat = ''.join(re.findall('([a-zA-Z0-9$.\s])', i))
    print(pat)

备选方案:

代码语言:javascript
复制
(re.findall('([^�])', i)
票数 1
EN

Stack Overflow用户

发布于 2019-08-04 19:05:46

也许,这句话很接近你的想法,

代码语言:javascript
复制
import re

lst =[' ', 'US$170.8980\xa0billion', '[2]', '\xa0(2018)']

output =''
for index,item in enumerate(lst):
    item = item.strip()
    if re.match('\[\d+\]',item) == None:
        if index == len(lst)-1:
            output +='-'
        output += re.sub(r'[^ -~]','-', item)

print(output)

不过不太确定。

输出

代码语言:javascript
复制
US$170.8980-billion-(2018)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57349295

复制
相关文章

相似问题

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