我正在尝试编写一个函数,该函数接受包含字符串的input_list并根据这些条件返回包含字符串的output_list。对于input_list中的每个字符串:
1.如果字符串中包含“ $”,则从字符串中删除出现在“ $”之后的所有字符,例如“ amazeing23 $ ing23”应变为“ amaze”。
2.将结果字符串添加到output_list中,例如“ amaze”
3.如果该字符串不包含“ $”,则将一个字符串添加到output_list中,然后添加其长度,例如“ world5”
def my_list(input_list): output_list = [] #遍历列表中的字符串 对于input_list中的项目: item = item.split() 打印(项目)
# Iterate through each character to check for $ sign.
for char in item:
if '-' in char:
char = item.split()
char = item.remove(item[0]+1)
output_list.append(item)
#print(output_list)
if '-' != char:
char = char + str(len(char))
output_list.append(char)
return output_list
input_list = [“ amazieng23 $ ing23”,“世界”,“ wuond3erful $ u3”] 结果=我的清单(输入清单) 打印(结果)
这是示例输入: input_list = [“ amazieng23 $ ing23”,“世界”,“ wuond3erful $ u3”] 预期产量: output_list = [“ amaze”,“ world5”,“很棒”] 我可以拆分具有$的列表,但不能删除$符号后的字符。当我尝试在第三步的字符串之后添加字符串的长度时,我也遇到错误“ TypeError:无法将'int'对象隐式转换为str”。
答案 0 :(得分:1)
如果我对您的理解正确,那么这应该是您要寻找的东西:
def my_list(input_list):
output_list = []
for item in input_list:
split_string = item.split('$')
if len(split_string) > 1:
pre_string = split_string[0]
for char in '$'.join(split_string[1:]):
pre_string = pre_string.replace(char,'')
output_list.append(pre_string)
else:
output_list.append(split_string[0] + str(len(split_string[0])))
return output_list
input_list=["amazieng23$ing23","world", "wuond3erful$u3"]
output = my_list(input_list)
for i in output:
print(i)
具有以下输出:
amaze
world5
wonderfl
请注意,缺少u
的妙用是因为它无法检查它是否是真实单词,并且您已经想删除u
。
NB:删除第一个$后需要整个字符串。例如。 Anacbborndla$r$b$rl
将返回Anaconda
答案 1 :(得分:1)
Python字符串是不可变的。您不应该像尝试那样更改字符串的某些索引值。您可以做得更好。
这个想法是,您一个一个地迭代输入列表,尝试使用string.find("$")
在字符串中查找“ $”,该函数将返回存在“ $”的索引,或者返回-1字符串中不存在“ $”。基于此检查,您需要对字符串进行必要的操作,然后将该字符串添加到output_list
中。
def do_string_manipulation(input_list):
output_list = []
for element in input_list:
index = element.find("$")
# do condition manipulation here
if index != -1:
element = element[:index]
else:
element = element + "".join(map(str, range(1, len(element)+1)))
output_list.append(element)
return output_list
print(do_string_manipulation(["amaze$123", "amaze"]))
这导致
['amaze', 'amaze12345']
一个讨厌的班轮代码可以做到这一点
output_list = [element[:element.find("$")] if (element.find("$") != -1) else element+"".join(map(str, range(1, len(element)+1))) for element in input_list]