在Python中发布Splitting

时间:2016-02-24 17:57:19

标签: python

目标是在'%'之后和' - '之前获取文本。

然而有时文字会在' - '之前被删除,就像随机字母一样。为什么这不能正常工作?先感谢您! PS使用Python 3.5。

if destiny=='fortune':
    fortuneformat= fortune_print.split('%')[-1]
     print (fortuneformat)
    _1_fortuneformat= fortuneformat.split("--")[0]

    fortunesay = str(_1_fortuneformat)

供参考:

fortune_print= get_random_fortune('quotes1.txt')

这是用于获取财富的功能。

def get_random_fortune(fortune_file):
    """
    Get a random fortune from the specified file. Barfs if the corresponding
    ``.dat`` file isn't present.byt
    :Parameters:
        fortune_file : str
            path to file containing fortune cookies
    :rtype:  str
    :return: the random fortune
    """
    fortune_index_file = fortune_file + '.dat'
    if not os.path.exists(fortune_index_file):
        print( 'Can\'t find file "%s"' % fortune_index_file)

    fortuneIndex = open(fortune_index_file, 'rb')
    data = pickle.load(fortuneIndex)
    fortuneIndex.close()
    randomRecord = random_int(0, len(data) - 1)
    (start, length) = data[randomRecord]

    f = open(fortune_file, 'rU')
    f.seek(start)
    fortuneCookie = f.read(length)
    f.close()
    return fortuneCookie

从提供输入的文本文件中输入财富的示例:

%
The NSA knows what you did last summer. But no one, in the NSA or outside it,
knows why they should.

    -- Shlomi Fish
    -- NSA Facts by Shlomi Fish and Friends ( http://www.shlomifish.org/humour/bits/facts/NSA/ )

预期输出:The NSA knows what you did last summer. But no one, in the NSA or outside it, knows why they should.

实际输出:The NSA knows what yo

我被问到如何制作腌制文件。在这个函数中用pickle.dump完成:

def make_fortune_data_file(fortune_file, quiet=False):
    """
    Create or update the data file for a fortune cookie file.
    :Parameters:
        fortune_file : str
            path to file containing fortune cookies
        quiet : bool
            If ``True``, don't display progress messages
    """
    fortune_index_file = fortune_file + '.dat'
    if not quiet:
        pass
        #print ('Updating "%s" from "%s"...' % (fortune_index_file, fortune_file))

    data = []
    shortest = sys.maxsize
    longest = 0
    for start, length, fortune in _read_fortunes(open(fortune_file, 'rU')):
        data += [(start, length)]
        shortest = min(shortest, length)
        longest = max(longest, length)

    fortuneIndex = open(fortune_index_file,'wb')
    pickle.dump(data, fortuneIndex,protocol=4,fix_imports=True)
    fortuneIndex.close()

1 个答案:

答案 0 :(得分:2)

为什么不使用正则表达式来代替财富?

s = """%
The NSA knows what you did last summer. But no one, in the NSA or outside it,
knows why they should.

    -- Shlom%i Fish
    -- NSA Facts by Shlomi Fish and Friends 
( http://www.shlomifish.org/humour/bits/facts/NSA/ )
% XSLT is the worst thing since non-sliced bread. -- Shlomi Fish -- 
XSLT Facts by Shlomi Fish and Friends ("""

re.findall("(?s)(?<=%).*?(?=--)",s)


Out[154]:
['\nThe NSA knows what you did last summer. But no one, in the NSA or outside it,\nknows why they should.\n\n    ',
 'i Fish\n    ',
 ' XSLT is the worst thing since non-sliced bread. ']

https://regex101.com/r/dQ9bD3/1