鱼C论坛

 找回密码
 立即注册
查看: 2297|回复: 8

[已解决]数据替换

[复制链接]
发表于 2020-10-28 11:26:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
s1=我看$name$和$name$
s2=特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}

s3=我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}
怎么用s1和s2转换出s3呢?
最佳答案
2020-10-28 14:57:57
本帖最后由 LuLD 于 2020-10-29 10:58 编辑


在字符串中查找字符,返回找到的位置
string.find(str)

比如
  1. >>> s1 = '我看$name$和$name'


  2. >>> s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  3. >>> s1.find(')

  4. 2
  5. >>> s2.find('{')
  6. 4
  7. >>> s3 = s1[:s1.find(')] + s2[s2.find('{'):]
  8. >>> s3
  9. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

  10. 或者
  11. >>> s4 = s2.replace(s2[:s2.find('{')],s1[:s1.find(')])
  12. >>> s4
  13. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  14. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-28 11:40:37 | 显示全部楼层
本帖最后由 LuLD 于 2020-10-28 13:54 编辑

这样?

  1. >>> s1 = '我看$name$和$name'
  2. >>> s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

  3. >>> s3 = s1[:2] + s2[4:]

  4. >>> s3
  5. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

  6. >>> s1 = '我看$name$和$name'
  7. >>> s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  8. >>> s3 = s2.replace('特别想看','我看')
  9. >>> s3
  10. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  11. >>>


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 12:40:38 | 显示全部楼层

如果我看 和 特别想看是个未知长度的同义词串呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 12:42:23 | 显示全部楼层
s1 = '我看$name$和$name'
s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

那么这两个字符固定么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 14:43:39 | 显示全部楼层
LuLD 发表于 2020-10-28 12:42
s1 = '我看$name$和$name'
s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
...

这两个固定
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 14:57:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 LuLD 于 2020-10-29 10:58 编辑


在字符串中查找字符,返回找到的位置
string.find(str)

比如
  1. >>> s1 = '我看$name$和$name'


  2. >>> s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  3. >>> s1.find(')

  4. 2
  5. >>> s2.find('{')
  6. 4
  7. >>> s3 = s1[:s1.find(')] + s2[s2.find('{'):]
  8. >>> s3
  9. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

  10. 或者
  11. >>> s4 = s2.replace(s2[:s2.find('{')],s1[:s1.find(')])
  12. >>> s4
  13. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  14. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 15:06:36 | 显示全部楼层
应该用正则里的re.sub会简单很多吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 15:53:27 | 显示全部楼层
意思将 $符与$符 之间的内容,替换为为 {符与}符之间的内容?
如果是这样的话,使用正则分组替换就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 10:59:23 | 显示全部楼层
本帖最后由 LuLD 于 2020-10-29 11:03 编辑
LuLD 发表于 2020-10-28 14:57
在字符串中查找字符,返回找到的位置
string.find(str)


s1.find('$')

代码中的 第三行的有缺失,可能是因为特殊字符的原因
s1.find('$')

  1. >>> s1 = '我看$name$和$name'


  2. >>> s2 = '特别想看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  3. >>> s1.find(') #s1.find(')

  4. 2
  5. >>> s2.find('{')
  6. 4
  7. >>> s3 = s1[:s1.find(')] + s2[s2.find('{'):]
  8. >>> s3
  9. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'

  10. 或者
  11. >>> s4 = s2.replace(s2[:s2.find('{')],s1[:s1.find(')])
  12. >>> s4
  13. '我看{name=“天下第一”&tag="电视剧"}和{name="神话"&tag="电影"}'
  14. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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