Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何替换参数上给定的字符串中的特定元素_Python_Python 3.x - Fatal编程技术网

Python 如何替换参数上给定的字符串中的特定元素

Python 如何替换参数上给定的字符串中的特定元素,python,python-3.x,Python,Python 3.x,我要做的是遍历一个字符串,选择一个名称和一个当前在字符串中的职务,然后它会找到该职务所在的行,然后用参数中选择的新名称替换当前名称 这是我的字符串: TV = ''' Tulleveien Velforening leder: Kari kasserer: Ole IT-ansvarlig: Liv parkeringsansvarlig: Kari arrangementsansvarlig: Liv hagekonsulent: Kari brannansvarlig: Kari '''

我要做的是遍历一个字符串,选择一个名称和一个当前在字符串中的职务,然后它会找到该职务所在的行,然后用参数中选择的新名称替换当前名称

这是我的字符串:

TV = '''
Tulleveien Velforening
leder: Kari
kasserer: Ole
IT-ansvarlig: Liv
parkeringsansvarlig: Kari
arrangementsansvarlig: Liv
hagekonsulent: Kari
brannansvarlig: Kari
'''
这就是我试图运行的函数,以实际执行它:

def Verv(navn, vervs):
    print("Tulleveien Velforening")
    for lines in TV.split("\n"):
        lines.replace(navn, lines)
        return TV
这就是我所尝试的:

Verv('Roald', ["leder", "IT-ansvarlig"])
但是当我运行这个程序时,我得到的只是一个列表,它是如何开始的。预期产出将是:

Tulleveien Velforening
leder: Roald
kasserer: Ole
IT-ansvarlig: Roald
parkeringsansvarlig: Kari
arrangementsansvarlig: Liv
hagekonsulent: Kari
brannansvarlig: Kari

如何解决此问题?

您应该替换
行。替换(导航,行)
行=行。替换(导航,行)
。replace返回替换了相关子字符串的原始字符串的副本。

您应该替换
行。将(navn,行)
替换为
行=行。替换(navn,行)
。replace返回原始字符串的副本,并替换相关的子字符串。

试试看,我添加了一些内联注释,可以解释逻辑

TV = '''
Tulleveien Velforening
leder: Kari
kasserer: Ole
IT-ansvarlig: Liv
parkeringsansvarlig: Kari
arrangementsansvarlig: Liv
hagekonsulent: Kari
brannansvarlig: Kari
'''


def Verv(navn, verv):
    # Created an empty dictionary to convert the lines into a dictionary which is much easier to manage.
    rin_dict = {}
    print("Tulleveien Velforening")
    # Forming a dictionary out of your string.
    for line in TV.split("\n"):
        if ":" in line:
            rin = line.split(": ")
            rin_dict[rin[0]] = rin[1]
    # Dictionary key replacement.
    for elm in verv:
        rin_dict[elm] = navn
    # Printing back the dictionary in your desired format.
    for k, v in rin_dict.items():
        print("{0}: {1}".format(k, v))


# The second argument is a list.
Verv('Roald', ["leder", "IT-ansvarlig"])


试试这个,我添加了一些内联注释,可以解释逻辑

TV = '''
Tulleveien Velforening
leder: Kari
kasserer: Ole
IT-ansvarlig: Liv
parkeringsansvarlig: Kari
arrangementsansvarlig: Liv
hagekonsulent: Kari
brannansvarlig: Kari
'''


def Verv(navn, verv):
    # Created an empty dictionary to convert the lines into a dictionary which is much easier to manage.
    rin_dict = {}
    print("Tulleveien Velforening")
    # Forming a dictionary out of your string.
    for line in TV.split("\n"):
        if ":" in line:
            rin = line.split(": ")
            rin_dict[rin[0]] = rin[1]
    # Dictionary key replacement.
    for elm in verv:
        rin_dict[elm] = navn
    # Printing back the dictionary in your desired format.
    for k, v in rin_dict.items():
        print("{0}: {1}".format(k, v))


# The second argument is a list.
Verv('Roald', ["leder", "IT-ansvarlig"])


老实说,
Verv
是非常错误的。这里是一步一步:

  • 打印(“Tulleveien Velforening”)
    • Tulleveien Velforening
      已在输入字符串中,为什么需要再次打印
  • 用于TV中的行。拆分(“\n”):
    -Access
    TV
    (从包含范围中),在换行上拆分,并将每个元素循环为
    行。
    
    • 理想情况下,
      TV
      应该作为参数传入,但这不是什么大问题
    • 应重命名为
      ,因为它包含一行,而不是一个可数行
  • 行。替换(navn,line)
    -用整行本身替换任何出现的
    navn
    • “Roald”
      不会出现在输入中,因此这不起任何作用
    • 替换
      没有任何意义
    • 可能您需要更像
      line.replace(…,navn)
  • 返回电视
    • TV
      未在功能中更改
    • Verv
      的返回值未使用
  • 请注意,未使用
    verv
    参数

    还要注意的是,除了
    Tulleveien Velforening
    ,没有输出


    以下是您想要做的:

    (这是一种可能的方法,也是另一种。)

  • 在电视的每一行上循环。我会为电视中的线路编写
    。splitlines():
  • (可选)如果行为空,则继续下一个循环
  • 检查行是否以
    vervs
  • 如果是,将
    行中的第二个字段替换为
    navn
  • 打印行

  • 我将把实现留给您。

    老实说,
    Verv
    是非常错误的。这里是一步一步:

  • 打印(“Tulleveien Velforening”)
    • Tulleveien Velforening
      已在输入字符串中,为什么需要再次打印
  • 用于TV中的行。拆分(“\n”):
    -Access
    TV
    (从包含范围中),在换行上拆分,并将每个元素循环为
    行。
    
    • 理想情况下,
      TV
      应该作为参数传入,但这不是什么大问题
    • 应重命名为
      ,因为它包含一行,而不是一个可数行
  • 行。替换(导航,行)
    -将出现的
    navn
    替换为整行
    • “Roald”
      不会出现在输入中,因此这不起任何作用
    • 替换
      没有任何意义
    • 可能您需要更像
      line.replace(…,navn)
  • 返回电视
    • TV
      未在功能中更改
    • Verv
      的返回值未使用
  • 请注意,未使用
    verv
    参数

    还要注意的是,除了
    Tulleveien Velforening
    ,没有输出


    以下是您想要做的:

    (这是一种可能的方法,也是另一种。)

  • 在电视的每一行上循环。我会为电视中的线路编写
    。splitlines():
  • (可选)如果行为空,则继续下一个循环
  • 检查行是否以
    vervs
  • 如果是,将
    行中的第二个字段替换为
    navn
  • 打印行

  • 我将把实现留给您。

    是一个局部变量,同时也是一个循环变量,因此这不会产生任何效果。有一个更深层次的问题,但我个人不太确定是什么。
    是一个局部变量,也是一个循环变量,所以这不会有任何影响。有一个更深层次的问题,但我个人不太确定是什么。