python 字符串替换单词_使用python将字符串中的单词替换为列表中的单词

本文介绍如何使用Python将包含数字的字符串替换为对应列表中的单词。通过将字符串按空格分割,转换数字为列表索引,实现字符串内容替换。同时讨论了代码优化建议,包括使用enumerate代替计数变量,以及改进的字符串替换方法。
摘要由CSDN通过智能技术生成

>>> text = '000 001 002 003 '

>>> words = ['foo', 'bar', 'that', 'these']

>>> [words[int(item)] for item in text.split()]

['foo', 'bar', 'that', 'these']

编辑:如果需要保留其他值,可以满足以下要求:def get(seq, item):

try:

return seq[int(item)]

except ValueError:

return item

然后简单地使用像[get(words, item) for item in text.split()]这样的东西-当然,如果字符串中有其他数字可能会被意外替换,那么get()中可能需要更多的测试。(编辑结束)

我们要做的是将文本分割成单独的数字,然后将它们转换成整数,并使用它们来索引您给出的查找单词的列表。

至于为什么你的代码不能工作,主要的问题是你在字符串上循环,这会给你字符,而不是单词。不过,这不是解决问题的好办法。

还值得一提的是,当循环遍历值并希望索引与它们一起使用时,应该使用the ^{} builtin,而不是使用计数变量。

例如:代替:y = -1

for w in text:

y = y + 1

...

使用:for y, w in enumerate(text):

...

这是更可读和Python。

现有代码的另一个特点是:w = {x:a}

for i, j in w.iteritems():

text = text.replace(i, j)

如果你仔细想想,可以简化为:text = text.replace(x, a)

你将w设置为一个项的字典,然后循环它,但是你知道它将永远只包含一个项。

更接近于您的方法的解决方案如下:words_dict = {"{0:03d}".format(index): value for index, value in enumerate(words)}

for key, value in words_dict.items():

text = test.replace(key, value)

我们创建一个从零填充数字字符串(使用^{})到值的字典,然后替换每个项。注意,当您使用2.x时,您需要dict.iteritems(),如果您是2.7之前的版本,请在元组生成器上使用内置的dict(),因为dict理解不存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值