找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 825|回复: 9

[求助] python3字符串替换问题,求大佬教教

1

主题

1

帖子

1

积分

贫民

积分
1
pydandan 发表于 2022-3-15 18:07:37 | 显示全部楼层 |阅读模式
如何将 !5568!!8868!_NWe 转换为 \u5568\u8868_NWe ?

回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
ljw_0125 发表于 2022-3-26 19:44:32 | 显示全部楼层
这个例子,首先分析转换前和转换后两个字符的特点
文中给出的要转换的字符为 "!5568!!8868!_NWe"
转换后的字符为" \u5568\u8868_NWe"
两个数据的特点可以分析出,其实题意是想把"!5568!"、"!8868!"这两个字符分别转换成"\u5568\" 、"\u8868"。字符中数值不变,只是改变了输出方式。因为并不是简单的用"!"分割,因此并不能简单地使用slip()方法分隔
那么就可以把"!5568!"中的左右的"!"看作是左括号和右括号,如下:
def strConvert(e):
    idx_num_ls = []
    rplc_str_ls = []
    for i in range(len(e)):
        if e[i]=="!":
            idx_num_ls.append(i)
        else:
            pass

        if len(idx_num_ls) == 2:
            idx1 = idx_num_ls[0]
            idx2 = idx_num_ls[1]
            rplc_str_ls.append(e[idx1:idx2+1])
            idx_num_ls.clear()
    for rplc_str in rplc_str_ls:
        new_rplc_str = rplc_str[0:-1].replace("!",r"\u")
        result = e = e.replace(rplc_str,new_rplc_str)
    return result

strr = "!5568!!5569!_Neg"
strr2 = strConvert(strr)
print(strr2)

不知道是否符合楼主想要的内容

点评

佩服,佩服。  发表于 2022-4-21 01:01
回复 支持 2 反对 0

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
lisongmei 发表于 2022-3-27 23:44:13 | 显示全部楼层
re.sub(r'!(\d+)!',r'\\u\1',sr)
回复 支持 1 反对 0

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
robin3385 发表于 2022-3-24 16:09:15 | 显示全部楼层
import re
s='!5568!!8868!_NWe'
print(re.sub(r'!+',r'\\u',s))
-------------------
\u5568\u8868\u_NWe
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
wcqpython 发表于 2022-4-21 00:00:20 | 显示全部楼层
用字符串替换,replace.()
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
wcqpython 发表于 2022-4-21 00:58:08 | 显示全部楼层
ljw_0125 发表于 2022-3-26 19:44
这个例子,首先分析转换前和转换后两个字符的特点
文中给出的要转换的字符为 "!5568!!8868!_NWe"
转换后的 ...

厉害啊,佩服!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
2265514616 发表于 2022-4-30 16:49:05 | 显示全部楼层
这个东西是usc2编码啊
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
Nemo_eyes 发表于 2022-5-4 08:43:23 | 显示全部楼层
import re
data = '!5568!!8868!_NWe'
data1=re.search(r'(.*\d).(\w*)',data)
data2=data1.group(1)+data1.group(2)
result = re.sub('!', r'\\u', data2)
print(result)
#\u5568\u\u8868_NWe
完整代码可运行,我注意到_NWe前少个\u. 新人在这里请大家多多指教
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
Nemo_eyes 发表于 2022-5-4 08:48:08 | 显示全部楼层
Nemo_eyes 发表于 2022-5-4 08:43
import re
data = '!5568!!8868!_NWe'
data1=re.search(r'(.*\d).(\w*)',data)

我用python 3.10版本,pycharm软件运行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表