python-3.x - 遍历子字符串以查找特殊字符并删除字符
问题描述
我正在尝试编写一个函数,该函数接受包含字符串的 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 = [] #遍历列表中的字符串 for item in input_list: item = item.split() print(item)
# 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","world", "wuond3erful$u3"] 结果=my_list(input_list) print(result)
这是示例输入: input_list=["amazieng23$ing23","world", "wuond3erful$u3"] 预期输出: output_list =["amaze","world5", "wonderful"] 我可以拆分列表有 $ 但我无法删除 $ 符号之后的字符。当我尝试在第三步的字符串之后添加字符串的长度时,我也遇到错误“TypeError:无法将'int'对象隐式转换为str”。
解决方案
Python 字符串是不可变的。您不应该像尝试那样更改字符串的某些索引值。你可以做得比这更好。
这个想法是你逐个迭代你的 input_list,尝试在你的字符串中找到“$” 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]
推荐阅读
- regex - 正则表达式查找替换以添加函数参数
- ios - OTOOL 替代 Linux
- python - 为什么我的 apache kafka 消费者随机忽略排队的消息?
- arrays - 用于反应组件的 Typescript 泛型采用记录数组和键数组
- opencv - OpenCV:stereoRectify 导致空图像
- git - Git - 在在线存储库中有未跟踪的文件
- java - 将 request.getParameterMap() 转换为带有对象列表的 bean
- ios - 为什么当我从下载文件夹中删除文件时找不到构建输入文件?
- php - 当字符串包含单引号时 PHP preg_replace() 返回 null 但否则有效
- ruby-on-rails - 安装后不显示ckeditor