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”):
-AccessTV
(从包含范围中),在换行上拆分,并将每个元素循环为行。
- 理想情况下,
TV
应该作为参数传入,但这不是什么大问题
行
应重命名为行
,因为它包含一行,而不是一个可数行
行。替换(navn,line)
-用整行本身替换任何出现的navn
不会出现在输入中,因此这不起任何作用“Roald”
- 替换
没有任何意义行
- 可能您需要更像
line.replace(…,navn)
返回电视
未在功能中更改TV
的返回值未使用Verv
verv
参数
还要注意的是,除了Tulleveien Velforening
,没有输出
以下是您想要做的: (这是一种可能的方法,也是另一种。)
。splitlines():
vervs
行中的第二个字段替换为navn
我将把实现留给您。老实说,
Verv
是非常错误的。这里是一步一步:
打印(“Tulleveien Velforening”)
已在输入字符串中,为什么需要再次打印Tulleveien Velforening
用于TV中的行。拆分(“\n”):
-AccessTV
(从包含范围中),在换行上拆分,并将每个元素循环为行。
- 理想情况下,
TV
应该作为参数传入,但这不是什么大问题
行
应重命名为行
,因为它包含一行,而不是一个可数行
行。替换(导航,行)
-将出现的navn
替换为整行
不会出现在输入中,因此这不起任何作用“Roald”
- 替换
没有任何意义行
- 可能您需要更像
line.replace(…,navn)
返回电视
未在功能中更改TV
的返回值未使用Verv
verv
参数
还要注意的是,除了Tulleveien Velforening
,没有输出
以下是您想要做的: (这是一种可能的方法,也是另一种。)
。splitlines():
vervs
行中的第二个字段替换为navn
我将把实现留给您。
行
是一个局部变量,同时也是一个循环变量,因此这不会产生任何效果。有一个更深层次的问题,但我个人不太确定是什么。行
是一个局部变量,也是一个循环变量,所以这不会有任何影响。有一个更深层次的问题,但我个人不太确定是什么。