簡體   English   中英

python將多行轉換為單行

[英]python convert multiline to single line

我想將 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 換行符?),我該怎么做?

刪除了我之前的答案,因為我意識到這是錯誤的,我需要測試這個解決方案。

假設您正在從文件中讀取此內容,您可以執行以下操作:

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讀取的每一行。 對於lines每一line ,我們調用str.strip()從每行的 ENDS 中刪除任何空格和非打印字符。 最后,我們在結果列表上調用'\\t'.join()以插入制表符。

您可以用“\\t”替換“\\r”字符。

my_string.replace("\r", "\t")

這是硬編碼。 但它有效。

poem='''
If I can stop one heart from breaking,
I shall not live in vain;
If I can ease one life the aching,
Or cool one pain,
Or help one fainting robin
Unto his nest again,
I shall not live in vain.
'''


lst=list(poem)
str=''
for i in lst:
    str+=i
print(str)
lst1=str.split("\n")
str1=""

for i in lst1:
    str1+=i+" "
str2=str1[:-2]
print(str2)

我使用splitlines()來檢測所有類型的線,然后將所有內容連接在一起。 這樣你就不必猜測替換 \\r 或 \\n 等。

"".join(somestring.splitlines())

這發生在 VIM 如何解釋 CR(回車),Windows 使用它來分隔新行。 你應該只使用一個編輯器(我個人更喜歡 VIM)。 閱讀: VIM ^M

這個技巧也很有用,將"\\n"寫成raw string 喜歡:

my_string = my_string.replace(r"\n", "\t")

這應該做的工作:

def flatten(multiline):
    lst = multiline.split('\n')
    flat = ''
    for line in lst:
        flat += line.replace(' ', '')+' '
    return flat
這應該可以完成這項工作:
string = """Name           Rick
 Address           902, A.street, Elsewhere"""

single_line = string.replace("\n", "\t")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM