【问题标题】:python : replace words in stringpython:替换字符串中的单词
【发布时间】:2014-04-01 19:38:24
【问题描述】:

我是 python 新手,所以我有这个问题。首先让我告诉你我想做什么。 我有一个包含以下内容的文件:

-0
    1
    3
    5
-00
    2
    3
    18
    321
...

我想把除-0、-xxxx字符串以外的每个元素都转换成序号,例如:

-0
    1
    2
    3
-00
    4
    2
    5
    6
...

我已经这样做了,我已经将索引保存到字典中 但我也想在字符串中替换它们。

我想替换确切的单词,我不想将可能包含的单词替换为另一个单词,例如:

111 replaced by 6
not 445111 replaced by 6 ~>4456

我有这个想法,但我不知道它是否有效或值得。对于 -xxxx 中的每个元素,我将创建一个列表,附加其元素,然后重命名并替换它们,然后将它们保存到文件中。 有什么想法吗?

【问题讨论】:

  • 你是什么意思,“序列字符串”?
  • 我认为您可以将' '+word+' ' 替换为str(count) 或使用正则表达式单词边界。
  • 这些元素是 str(numbers)。我想将这些元素按顺序重命名为数字。如果您在示例中注意到我想将这些元素保存为序号,并将分配索引到 dict

标签: python string list replace


【解决方案1】:

我不太确定你想做什么。但是,如果列表元素和字符串元素应该相同,为什么不从列表中执行 str(elem) 。这样,您实际上是在创建您想要在那里开始的字符串,而不是替换字符串中的元素。如果字典中还没有“单词”,您似乎只是在替换它。如果它已经在字典中,则将单词本身留在字符串中。

根据您显示的代码,这似乎可以做到

你可以用

创建一个字符串列表
newz = []
for word in z:
   if "-" not in word:
     if word not in d.keys():
        count = count + 1
        d[word] = count
        newz.append(str(count))
     else:
        newz.append(word)
   else:
     newz.append(word)

【讨论】:

    【解决方案2】:

    我认为这是你需要的:

    for i, word in enumerate(z):
        if "-" not in word:
            if word in d.keys():
                z[i] = str(d[word])
            else:
                count = count + 1
                d[word] = count
                z[i] = str(count)
    

    这样您就可以就地替换单词,而无需任何字符串操作。

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      相关资源
      最近更新 更多