目标是在'%'之后和' - '之前获取文本。
然而有时文字会在' - '之前被删除,就像随机字母一样。为什么这不能正常工作?先感谢您! 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()
答案 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. ']