首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python $OUTPUT_RECORD_SEPARATOR和$INPUT_RECORD_SEPARATOR等效

Python $OUTPUT_RECORD_SEPARATOR和$INPUT_RECORD_SEPARATOR等效
EN

Stack Overflow用户
提问于 2009-04-21 03:23:33
回答 5查看 394关注 0票数 0

Python是否与Perl中的$OUTPUT_RECORD_SEPARATOR或$\等效?

更新:,我完全错了.如果有这样的东西,我想找一个相当于$INPUT_RECORD_SEPARATOR的Python?可以覆盖的内容,以便在执行readline()类型时调用它寻找换行符以外的内容。很抱歉把原来的问题搞砸了。

EN

回答 5

Stack Overflow用户

发布于 2009-04-21 04:53:20

您可以使用‘’.‘.join方法。例如:

代码语言:javascript
复制
# print 'foo', 'bar', 'baz' separated by spaces
print 'foo', 'bar', 'baz'
# print separated by commas
print ', '.join(['foo', 'bar', 'baz'])

编辑:

好的,我误解了OUTPUT_RECORD_SEPARATOR的目的,所以“.‘.join”不是你想要的。

print 'foo'等同于sys.stdout.write('foo'+'\n'),因此您可以滚动自己的打印函数:

代码语言:javascript
复制
def myprint(*args, end='\n'):
    sys.stdout.write(' '.join(args) + end)

或者对工厂功能再走一步:

代码语言:javascript
复制
def make_printer(end):
    def myprint(*args, end='\n'):
        sys.stdout.write(' '.join(args) + end)
    return myprint

# usage:
p = make_printer('#')
p('foo', 'bar', 'baz')

最后,如果您大胆的话,您可以重写sys.stdout:

代码语言:javascript
复制
sys.old_stdout = sys.stdout
class MyWrite(object):
    def __init__(self, end='\n'):
        self.end = end
    def write(self, s):
        sys.old_stdout.write(s.replace('\n', self.end))

这将导致print语句产生可选的行尾。用法:

代码语言:javascript
复制
sys.stdout = MyWrite('!\n')
print 'foo'
# prints: foo!

请注意,您可能需要覆盖的不仅仅是写(),或者至少为MyWrite.flush()这样的事情提供重定向到sys.old_stdout.flush()。

票数 1
EN

Stack Overflow用户

发布于 2009-04-21 04:58:48

Python3的打印函数有sepend参数。

代码语言:javascript
复制
print('foo', 'bar', 'baz', sep='|', end='#')

注意,在Python3中,print不再是一个语句,而是一个函数。

票数 1
EN

Stack Overflow用户

发布于 2009-04-29 23:53:13

如果您希望输入中的任何\r\n\r\n都被看作是换行符,那么您可以在‘open()’调用中使用“通用换行符支持”。

Python2.6 open()中,需要通过在模式字符串中添加‘U’来显式启用这一点:

代码语言:javascript
复制
in_file = open('foo.txt', 'rU')

它还依赖于Python解释器中的这种支持;但文档表示默认情况下这是可用的。

Python3.0 open()中,通用换行符总是可用的,是默认行为;您可以为newline参数选择具有不同值的不同行为。

如果您希望输入来解释由换行符以外的其他内容终止的记录,那么您就不需要“readline”(根据名称,它专门读取行,而不是一般的记录),而AFAIK将不得不实现您自己的记录读取代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/770925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档