Странное поведение .Join () - PullRequest
       0

Странное поведение .Join ()

0 голосов
/ 05 февраля 2020

По какой-то причине "" .join () в моем коде добавляет дополнительные пробелы там, где их не должно быть. Извините, если это очень нубский вопрос, но я понятия не имею, несмотря на то, что обычно могу разобраться с подобными вещами.

Код, о котором идет речь (просто фрагмент, но остальные не должны быть релевантными)

def translate(stringinput):
    if all(c in string.printable for c in stringinput):
        output = ""
        sent_detector = nltk.data.load('tokenizers/punkt/english.pickle')
        sentences = sent_detector.tokenize(stringinput.strip())
        for sentence in sentences:
            sentence = shuffle(sentence)
            output = output + " " + sentence_translate(sentence)
        print(output.split())
        " ".join(output.split())
        return output.strip()
    else:
        print("Input does not entirely consist of ASCII Characters. Offending characters were:")
        print([c for c in stringinput if c not in string.printable])

stringinput = "Ulysses, Ulysses - Soaring through all the galaxies. In search of Earth, flying in to the night. Ulysses, Ulysses - Fighting evil and tyranny, with all his power, and with all of his might. Ulysses - no-one else can do the things you do. Ulysses - like a bolt of thunder from the blue. Ulysses - always fighting all the evil forces bringing peace and justice to all."
print(translate(stringinput))
writer(folder / "final.json", dict)

Рассматриваемые строки:

print(output.split())
" ".join(output.split())
return output.strip() -> which is then printed out via print(translate(stringinput))

Распечатки из этих двух:

['kwmuo', 'kwmuo', 'jhhdd', 'zzazyayb', 'ptictte', 'igbo', 'tkaty', 'puiq.', 'xpaiuc', 'ftucqtze', 'ossjjh', 'ywwuh', 'rpauuqqz', 'fddu', 'pfhqys', 'igbo', 'kwmuo', 'qpousq,', 'zaapyuwq,', 'zqaoys,', 'histje', 'kwmuo', 'uzzaa', 'ptictte', 'eczt', 'rkmwy', 'uzzaa,', 'zaapyuwq,', 'ptictte,', 'xpaiuc,', 'eczt,', 'rssjj', 'kwmuo', 'hydymw', 'mfusq', 'gotsejz', 'igbo', 'mkpwhu', 'mkpwhu', 'os', 'gooss', 'teezc', 'kwmuo', 'dyyww', 'gtokb.', 'xpaiuc', 'cxxppu,', 'uqqzzan', 'igbo', 'gooss', 'kwmuo', 'hdyyyy', 'itfe.', 'uqqlos', 'ptictte', 'igbo', 'zqaoys', 'ywwhuyq', 'zaapyuwq', 'hdyyyy', 'osgjhhy', 'ptictte', 'rpauuqqz']

и

kwmuo kwmuo jhhdd zzazyayb ptictte igbo tkaty  puiq. xpaiuc ftucqtze ossjjh ywwuh rpauuqqz fddu pfhqys igbo  kwmuo qpousq, zaapyuwq, zqaoys, histje kwmuo uzzaa ptictte eczt rkmwy uzzaa, zaapyuwq, ptictte, xpaiuc, eczt, rssjj  kwmuo hydymw mfusq gotsejz igbo mkpwhu mkpwhu os gooss  teezc kwmuo dyyww gtokb. xpaiuc cxxppu, uqqzzan igbo gooss  kwmuo hdyyyy itfe. uqqlos ptictte igbo zqaoys ywwhuyq zaapyuwq hdyyyy osgjhhy ptictte rpauuqqz

Например, если вы посмотрите между tkaty и puiq , оба элемента массива явно не имеют конечного или начального пробела, так почему объединенная версия явно имеет два пробела между ?? Это продолжается время от времени по всему выходу без очевидной картины. Это воспроизводимо, я несколько раз запускал код с точно таким же результатом.

Есть идеи?

1 Ответ

2 голосов
/ 05 февраля 2020

Вы должны присвоить вывод метода join чему-либо, он не работает на месте:

print(output.split())
" ".join(output.split())
return output.strip()

должно быть

print(output.split())
output = " ".join(output.split())
return output.strip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...