按字符数分割字符串

Ban*_*Gap 21 python string

我无法弄清楚如何使用字符串方法执行此操作:

在我的文件中,我有类似1.012345e0070.123414e-004-0.1234567891.21423 ...这意味着数字之间没有分隔符.

现在,如果我从这个文件中读取一行,我会得到一个像上面一样的字符串,我想在12个字符之后拆分.str.split()就我所见,没有办法用类似的东西或任何其他字符串方法做到这一点,但也许我忽略了什么?

谢谢

Ned*_*der 23

由于您希望以不寻常的方式进行迭代,因此生成器是一种抽象的方法:

def chunks(s, n):
    """Produce `n`-character chunks from `s`."""
    for start in range(0, len(s), n):
        yield s[start:start+n]

nums = "1.012345e0070.123414e-004-0.1234567891.21423"
for chunk in chunks(nums, 12):
    print chunk
Run Code Online (Sandbox Code Playgroud)

生产:

1.012345e007
0.123414e-00
4-0.12345678
91.21423
Run Code Online (Sandbox Code Playgroud)

(看起来不对,但那些是12个字符的大块)


J.J*_*.J. 14

你正在寻找字符串切片.

>>> x = "1.012345e0070.123414e-004-0.1234567891.21423"
>>> x[2:10]
'012345e0'
Run Code Online (Sandbox Code Playgroud)


mop*_*led 7

line = "1.012345e0070.123414e-004-0.1234567891.21423"
firstNumber = line[:12]
restOfLine = line[12:]

print firstNumber
print restOfLine
Run Code Online (Sandbox Code Playgroud)

输出

1.012345e007
0.123414e-004-0.1234567891.21423
Run Code Online (Sandbox Code Playgroud)


Aam*_*nan 6

你可以这样做:

step = 12
for i in range(0, len(string), 12):
    slice = string[i:step]
    step += 12
Run Code Online (Sandbox Code Playgroud)

这样,在每次迭代中,您将获得 14 个字符的切片。