Python是否与Perl中的$OUTPUT_RECORD_SEPARATOR或$\等效?
更新:,我完全错了.如果有这样的东西,我想找一个相当于$INPUT_RECORD_SEPARATOR的Python?可以覆盖的内容,以便在执行readline()类型时调用它寻找换行符以外的内容。很抱歉把原来的问题搞砸了。
发布于 2009-04-21 04:53:20
您可以使用‘’.‘.join方法。例如:
# 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'),因此您可以滚动自己的打印函数:
def myprint(*args, end='\n'):
sys.stdout.write(' '.join(args) + end)或者对工厂功能再走一步:
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:
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语句产生可选的行尾。用法:
sys.stdout = MyWrite('!\n')
print 'foo'
# prints: foo!请注意,您可能需要覆盖的不仅仅是写(),或者至少为MyWrite.flush()这样的事情提供重定向到sys.old_stdout.flush()。
发布于 2009-04-21 04:58:48
Python3的打印函数有sep和end参数。
print('foo', 'bar', 'baz', sep='|', end='#')注意,在Python3中,print不再是一个语句,而是一个函数。
发布于 2009-04-29 23:53:13
如果您希望输入中的任何\r、\n或\r\n都被看作是换行符,那么您可以在‘open()’调用中使用“通用换行符支持”。
在Python2.6 open()中,需要通过在模式字符串中添加‘U’来显式启用这一点:
in_file = open('foo.txt', 'rU')它还依赖于Python解释器中的这种支持;但文档表示默认情况下这是可用的。
在Python3.0 open()中,通用换行符总是可用的,是默认行为;您可以为newline参数选择具有不同值的不同行为。
如果您希望输入来解释由换行符以外的其他内容终止的记录,那么您就不需要“readline”(根据名称,它专门读取行,而不是一般的记录),而AFAIK将不得不实现您自己的记录读取代码。
https://stackoverflow.com/questions/770925
复制相似问题