【问题标题】:byte prefix in python stringpython字符串中的字节前缀
【发布时间】:2018-05-02 11:22:08
【问题描述】:

我正在尝试使用 loremipsum 包生成随机字符串

from loremipsum import generate_paragraph, get_sentences, get_sentence
sentences_count, words_count, paragraph = generate_paragraph()
print(paragraph)

它输出一个带有字节前缀的字符串,即每个单词都以a和b或B作为前缀。

B'ante' b'ut' b'a' b'ut' b'a'。 B'nibh' b'ad' b'in' b'non' b'a' b'dui' b'nunc' b'a'。 B'diam' b'at' b'a' b'eros' b'a'。 B'quis' b'at' b'a' b'a' b'a' b'a' b'eros' b'a' b'porta'。 B'orci' b'id' b'mi' b'ut' b'eleifend' b'fames' b'rutrum' b'at' b'luctus' b'diam'。 B'arcu' b'et'。 B'佩德' 但是'b'a' b'a'。 B'elit' b'at' b'pretium' b'netus' b'amet' b'nunc'。 B'nunc' b'eu' b'a' b'mi' b'ultricies' 但' b'a' b'etiam' b'quis'。 B'nisl' b'mi'。 B'orci' b'id' b'a'。 B'eget' b'ad' b'a' b'a' b'a' b'ad' b'magna' b'pretium' b'sed'。 B'elit' b'eu' b'a' b'congue' b've' b'a'

如何在 python 3.6.5 中摆脱这些字节前缀。

【问题讨论】:

标签: python string python-3.x


【解决方案1】:

loremipsum 已损坏,因为它们返回包含格式化字节的字符串,这使得 有意义。要临时解决此问题,您可以使用此功能:

import re
from loremipsum import generate_paragraph

def fix_loremipsum(loremipsum_string):
    loremipsum_string = re.sub("B'(.*?)'", lambda x: x.group(1).title(), loremipsum_string)
    loremipsum_string = re.sub("b'(.*?)'", lambda x: x.group(1), loremipsum_string)
    return loremipsum_string


sentences_count, words_count, paragraph = generate_paragraph()
paragraph = fix_loremipsum(paragraph)
print(paragraph)

【讨论】:

  • 我之前尝试过这个,得到以下错误:AttributeError: 'str' object has no attribute 'decode'。我相信这是特定于 python 3.x
  • 我刚试了一下,发现loremipsum库返回的是一串格式化字节。哇。您应该向编码员发送电子邮件。
【解决方案2】:

这对我有用:

import loremipsum as l
l.generator._DICTIONARY = [i.decode('utf8') for i in l.generator._DICTIONARY]
l._GENERATOR = l.Generator()
print(l.get_paragraph())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-28
    • 2011-01-28
    • 2016-06-15
    • 1970-01-01
    • 2014-01-14
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多