0

我有一个纯文本文件,我正在尝试使用文本文件重新创建打印的“书面打印”功能。

文本文件当前有:

"""
Test1

Test1

Test1
""",
"""
Test2

Test2

Test2
""",
"""
Test3

Test4

Test5
"""

我的目标是将其读入 3 个字符串的列表中,让随机模块选择其中一个字符串并最终完全按照所写的方式打印它,但没有 """ 或 ,。如果需要,我可以从文件中删除这些字符是,我只是在猜测如何让 print 准确地打印出所写的内容:

print("""
Test1

Test1

Test1
""")

(输出)

Test1

Test1

Test1

任何帮助将非常感激。谢谢!

编辑:我试过了:

import random
file = open('prebaked', 'r')
print(random.choice(file))

import random
with open('prebaked', 'r') as f:
    file = f.read()
print(random.choice(file))

import random
with open('prebaked', 'r') as f:
    file = list(f.read())
print(random.choice(file))
4

2 回答 2

3

逻辑:

  • 阅读文件。
  • 根据','并从字符串中删除空格,将字符串分成一个列表"""
  • 随机调用以从列表中进行选择。

代码:

import random

with open('mytextfile.txt', 'r') as file_obj:
    str_list = [s.strip('\r\n\t "') for s in file_obj.read().split(',')]

print random.choice(str_list)
于 2013-06-04T13:17:45.793 回答
2

您的文件包含的几乎正是字符串列表的 Python 语法,只是缺少了[and ]。如果添加这些,您可以使用ast.literal_eval安全地评估 Python 语法并为您提供字符串列表:

>>> from ast import literal_eval
>>> with open('myfile.txt', 'r') as f:
        file_contents = f.read()
>>> literal_eval('[' + file_contents + ']')
['\nTest1\n\nTest1\n\nTest1\n', '\nTest2\n\nTest2\n\nTest2\n', '\nTest3\n\nTest4\n\nTest5\n']
于 2013-06-04T13:12:29.773 回答