为什么第一部分打印4而不是3?

时间:2013-12-08 02:48:30

标签: python list printing

l = open(filename)
string = l.read()
subsetA, subsetB = string[:len(string)//2], string[len(string)//2:]
print(subsetA)
print(subsetB)

它继续打印:

9 17 4 8
11 18 13

我期待得到:

9 17 4
8 11 18 13

文本文件:

9 17 4 8 11 18 13

有任何帮助吗?谢谢!我仍然不明白为什么我这个部分做错了:

subsetA, subsetB = string[:len(string)//2], string[len(string)//2:]

1 个答案:

答案 0 :(得分:1)

您将长度为18的字符串拆分为两个:

>>> text = '9 17 4 8 11 18 13\n'
>>> len(text) // 2
9
>>> text[:9]
'9 17 4 8 '
>>> text[9:]
'11 18 13\n'

所以该师使完美感

即使最后没有换行符,使其长度为17,仍然有效:

>>> text = '9 17 4 8 11 18 13'
>>> len(text)
17
>>> len(text) // 2
8
>>> text[:8]
'9 17 4 8'
>>> text[8:]
' 11 18 13'

你没有根据这里的数字组数将字符串分成两半,而是纯粹按字符串数字分割。

如果您想这样做,请首先拆分该行:

>>> parts = text.split()
>>> parts
['9', '17', '4', '8', '11', '18', '13']
>>> parts[:len(parts)//2]
['9', '17', '4']
>>> parts[len(parts)//2:]
['8', '11', '18', '13']