替换python中列表中的部分字符串

时间:2016-09-08 06:44:52

标签: python

例如,我有一个不同的名字列表

list1 = ["jai.kumar","jaikumar","j_kumar","jk","kumar-jai","ja.ku"]
for str in l1:
 if str == “jai”
  str.replace (“jai”,”firstname”)
   if str == “ja”
    str.replace (“ja”,”first 2 character of firstname”)
     if str == “j”
      str.replace (“j”,”first character of firstname”)
 if str == “kumar”
  str.replace (“kumar”,”lastname”)
   if str == “ku”
    str.replace (“ku”,”first 2 character of lasttname”)
     if str == “k”
      str.replace (“k”,”first character of lastname”)
print(list1)

如何更正上述代码或有更简单的方法吗?

我的预期输出是

 list1 = ["firstname.lastname","firstnamelastname","first character of firstname_lastname",.....]

2 个答案:

答案 0 :(得分:1)

首先,您要定义一个列表" list1"然后在列表上运行" l1"虽然没有定义,但我认为这是一个错字。你的缩进也被搞砸了,你的ifs后你丢失了大量的冒号,我会纠正这一切,如果我没有并且错过了这个目的,请告诉我。

第二,你正在使用==来比较字符串,这些字符串只对完全匹配才是真的。您正在寻找的是" in"操作

第三,你错误地使用string.replace(" str1"," str2"),string.replace()返回字符串的浅表副本,其中&#34 ; STR1"实例已被" str2"取代,所以你想要做的更像是str = str.replace(" 1"," 2&#34 ;)

第四,

for str in list1:

创建一个str变量,它是list1元素的别名,重新分配str会破坏别名,这意味着str = something不会修改list1。

最后,你不会遇到" ja"如果你已经遇到过" jai"我认为,因为使用elifs更有效率,而不是测试" ja"和" j"在找到" jai"

之后

总而言之,您的代码必须是这样的:

list1 = ["jai.kumar","jaikumar","j_kumar","jk","kumar-jai","ja.ku"]
for i in range(len(list1)):
 if “jai” in list1[i]:
  list1[i] = list1[i].replace (“jai”,”firstname”)
 elif “ja” in list1[i]:
  list1[i] = list1[i].replace (“ja”,”first 2 character of firstname”)
 elif “j” in list1[i]:
  list1[i] = list1[i].replace (“j”,”first character of firstname”)
 if “kumar” in list1[i]:
  list1[i] = list1[i].replace (“kumar”,”lastname”)
 elif “ku” in list1[i]:
  str = str.replace (“ku”,”first 2 character of lasttname”)
 elif "k” in list1[i]:
  list1[i] = list1[i].replace (“k”,”first character of lastname”)
print(list1)

希望这能回答你的问题,如果有什么不清楚,请告诉我。

答案 1 :(得分:1)

我认为你的意思是这样的?:

button {
  border-radius: 4px;
  padding: 5px 10px;
  margin: 4px 0;
}

button:hover {
  border: 6px solid crimson;
  font-weight: 800;
  background-color: white;
  color: crimson;
  margin: 0;
}

如果是(在'if'结尾处记住分号),则此代码将无法正常工作,因为第二个和第三个if位于先前的IF中。 因此,如果第一个条件 - > str ==“jai”失败然后你不检查下一个。 它应该是:

if str == “jai”:
    str.replace (“jai”,”firstname”)
    if str == “ja”:
        str.replace (“ja”,”first 2 character of firstname”)
        if str == “j”:
            str.replace (“j”,”first character of firstname”)