Saya ingin membagi teks setelah sejumlah karakter non-spasi dan non-paragraf.

Sejauh ini, saya tahu bahwa Anda dapat melakukan ini untuk memisahkan string setelah jumlah total karakter

cutOff = 10
splitString = oldString[0:cutOff]

Tetapi bagaimana saya melakukan ini agar tidak memperhitungkan spasi dalam jumlah karakter?

0
SantoshGupta7 4 Juni 2019, 21:20

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan ekspresi reguler. Ini mengembalikan tuple (daftar) dua elemen yang berisi dua bagian dari string input yang terputus di lokasi yang diinginkan:

import re

data = """Now is  the time
for all   good men
to come"""

def break_at_ignoring_whitespace(str, break_at):
    m = re.match(r"((\s*\w){%d})(.*)" % break_at, str, re.S)
    return (m.group(1), m.group(3)) if m else (str, '')

r = break_at_ignoring_whitespace(data, 14)

print(">>" + r[0] + "<<")
print(">>" + r[1] + "<<")

Hasil:

>>Now is  the time
fo<<
>>r all   good men
to come<<
1
Steve 6 Juni 2019, 00:51

Anda dapat melakukan perulangan while.

oldString = "Hello world"
cutOff = 10

i = 0
while i < cutOff and cutOff < len(oldString):
    if oldString[i] in [' ', '\n']: cutOff += 1
    i += 1

splitString = oldString[:cutOff]
1
Enzo 4 Juni 2019, 18:30