如何在逗号分隔的字符串中用零替换空字符串?

7 投票
6 回答
13873 浏览
提问于 2025-04-15 21:25

“8,5,,1,4,7,,,,7,,1,9,3,6,,,8,6,3,9,,2,5,4,,,,,3,2,,,7,4,1,1,,4,,6,9,,5,,,,5,,,1,,6,3,,,6,5,,,,7,4,,1,7,6,,,,8,,5,,,7,1,,3,9,”

我正在做一个编程挑战,需要把这个序列解析到我的数独脚本里。想把上面的序列变成 8,5,0,1,4,7,0,0,0,7,0,1,9,3,6,0,0,8......... 我试过用正则表达式,但没有成功,求助,谢谢。

6 个回答

4
s = "8,5,,1,4,7,,,,7,,1,9,3,6,,,8,6,3,9,,2,5,4,,,,,3,2,,,7,4,1,1,,4,,6,9,,5,,,,5,,,1,,6,3,,,6,5,,,,7,4,,1,7,6,,,,8,,5,,,7,1,,3,9,"
s = re.sub('((?<=,)|^)(?=,|$)', '0', s)
print s

输出结果是:

8,5,0,1,4,7,0,0,0,7,0,1,9,3,6,0,0,8,6,3,9,0,2,5,4,0,0,0,0,3,2,0,0,7,4,1,1,0,4,0,6,9,0,5,0,0,0,5,0,0,1,0,6,3,0,0,6,5,0,0,0,7,4,0,1,7,6,0,0,0,8,0,5,0,0,7,1,0,3,9,0

5

在Python中,正则表达式通常不是必需的。给定一个字符串s,你可以试试:

','.join(x or '0' for x in s.split(','))

我假设你想用0来填补空白。如果你想要一个整数的列表,而不是字符串,可以试试这个:

[(x and int(x)) or 0 for x in s.split(',')]
11

你可以使用

[(int(x) if x else 0) for x in data.split(',')]

data.split(',') 这个方法会把字符串按照逗号分开,变成一个列表。

['8', '5', '', '1', '4', '7', '', '', '', ...]

这个表达式

(int(x) if x else 0)

如果 x 是真的话,就返回 int(x),如果 x 是假的话,就返回 0。要注意,空字符串被认为是假的。

撰写回答