我想将Python多行字符串转换为单行。如果在Vim中打开字符串,则在每一行的开头都可以看到^ M。我如何处理字符串以使其全部显示在一行中,并且每行之间使用制表符分隔。 Vim中的示例如下所示:

  Serialnumber
 ^MName           Rick
 ^MAddress           902, A.street, Elsewhere

我希望它是这样的:
Serialnumber \t Name \t Rick \t Address \t 902, A.street,......

每个字符串都在一行中。我试过了
   somestring.replace(r'\r','\t')

但这是行不通的。另外,如果字符串在一行中,如果我想在字符串末尾使用换行符(UNIX newline?),该怎么做?

最佳答案

删除了我以前的答案,因为我意识到这是错误的,因此我需要测试该解决方案。

假设您正在从文件中读取内容,则可以执行以下操作:

f = open('test.txt', 'r')
lines = f.readlines()
mystr = '\t'.join([line.strip() for line in lines])

如ep0所说,^ M代表'\r',在Windows中,回车符。令人惊讶的是,由于Windows换行符为\r\n,所以每行的开头都带有^ M。在行首加上^ M表示您的文件包含\n\r。

无论如何,以上代码都使用列表理解来循环从test.txt读取的每一行。对于line中的每个lines,我们调用str.strip()以从每行的ENDS中删除所有空格和非打印字符。最后,我们在结果列表上调用'\t'.join()来插入选项卡。

关于python将多行转换为单行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18004807/

10-10 23:36