基本上我有这样一个字符串:
"1,2,3 2,3,4 3,4,5 4,5,6 5,6,7 26,117,1212"
我想用空格分割它,然后替换每个元素中的第 i 个元素。所以如果我用 0 替换每个第二个元素,那么结果将是:
"1,0,3 2,0,4 3,0,5 4,0,6 5,0,7 26,0,1212"
我是否应该拆分它,然后对于每个字符串元素,将它们拆分在一个 for 循环中,然后如果我在指定的索引处,则使用指定的值,否则使用元素本身,然后将其附加到最终字符串?
我认为在 Python 中做同样的事情可能有更好/更快和更短的方法。
请您参考如下方法:
nums = [[int(num) for num in substring.split(',')] for substring in s.split()]
for row in nums:
row[1] = 0
第一行将输入从文本格式转换为数字列表列表,第二行和第三行替换每个子列表中的第二项。此时,如果您需要打印数字或将它们写入文件或其他内容,您可以转换回字符串,但如果您需要继续使用数字,最好继续使用 nums 列表。
如果您要立即将数据转回字符串,则不值得调用 int。在那种情况下,代码减少到
nums = [substring.split(',') for substring in s.split()]
for row in nums:
row[1] = '0'
然后转换回字符串,
string_representation = ' '.join(','.join(row) for row in nums)
要替换每个部分的第一个或第三个元素,只需将 row[1] = '0' 中的 1 替换为您要替换的索引即可。 0 表示第一个元素,2 表示第三个元素。您可以使用要使用的索引创建一个函数:
def zero_out_column(s, index):
nums = [substring.split(',') for substring in s.split()]
for row in nums:
row[index] = '0'
return ' '.join(','.join(row) for row in nums)
