【发布时间】:2012-12-09 14:48:42
【问题描述】:
我正在用 Python 创建一个词云程序,但我遇到了一个词替换功能。我正在尝试用有序列表中的单词替换 html 文件中的一组数字(所以我正在使用字符串)。所以 000 将替换为列表中的第一个单词,001 替换为第二个单词,依此类推。
下面的这个方法在通过一个相对简单的字符串时有效:
def textReplace():
text = '000 this is 001 some 002 text 003 '
word = ['foo', 'bar', 'that', 'these']
for a in word:
for y, w in enumerate(text):
x = "00"+str(y)
text = text.replace(x, a)
print text
我正在处理一个 html 文件(我将文件的一部分放在下面的字符串中),而不是用列表中的连续项目替换 000,001,002 等的每个实例,而是将所有数字替换为第一项。为什么此方法适用于上述字符串,但不适用于以下字符串。任何帮助表示赞赏。谢谢!
def htmlReplace():
text = '<p><span class="newStyle0" style="left: 291px; top: 258px">000</span></p> <p><span class="newStyle1" style="left: 85px; top: 200px">001</span></p> <p><span class="newStyle2" style="left: 580px; top: 400px; width: 167px; height: 97px">002</span></p> <p><span class="newStyle3" style="left: 375px; top: 165px">003</span></p>'
word = ['foo', 'bar', 'that', 'these']
for a in word:
for y, w in enumerate(text):
x = "00"+str(y)
text = text.replace(x, a)
print text
【问题讨论】:
-
使用标准的Python字符串格式化功能不是更好吗?
'{0}, {1}, {2}, {3}'.format(*word)将获得相同的结果。 -
这样你会把1000变成1foo。
-
你为什么接受my answer到your last question,然后继续使用一个坏掉的版本?此外,您可以通过使用String Formatting syntax 和仅使用
str.format()来让自己更轻松。 -
@Lattyware 我有点新手,很抱歉有任何困惑。据我了解,我确实使用您的答案来解决这个问题。它适用于更简单的字符串,但不适用于“html 字符串”。所以当我在我的 HTML 文件上应用上述方法时,它并没有像我预期的那样工作。
标签: python string list enumerate