簡體   English   中英

python split string但保留分隔符

[英]python split string but keep delimiter

在python中我可以輕松地逐行讀取文件到一個集合中,只需使用:

file = open("filename.txt", 'r')
content = set(file)

集合中的每個元素都包含實際行和尾隨換行符。

現在我有一個包含多行的字符串,我想通過正常的set操作與內容進行比較。

有沒有辦法以相同的方式將字符串轉換為set ,例如,它還包含換行符?


編輯:

問題“在Python中,如何拆分字符串並保留分隔符?” 處理類似的問題,但答案並不容易采用其他用例。

import re
content = re.split("(\n)", string)

沒有預期的效果。

如果您將True作為可選的keepends參數傳遞, str.splitlines()方法將完全按照您的要求keepends 它將換行符保留在每行的末尾,如果字符串末尾沒有換行符,則不會在最后一行添加換行符。

text = "foo\nbar\nbaz"
lines = text.splitlines(True)
print(lines) # prints ['foo\n', 'bar\n', 'baz']

您也可以反過來做,在讀取文件行時刪除行結尾,假設您使用U打開文件以進行通用行結束:

file = open("filename.txt", 'rU')
content = set(line.rstrip('\n') for line in file)

這是一個完成工作的簡單生成器:

content = set(e + "\n" for e in s.split("\n"))

此解決方案最后添加了一個額外的換行符。

這可能是你的意思嗎?

>>> from io import StringIO
>>> someLines=StringIO('''\
... line1
... line2
... line3
... ''')
>>> content=set(someLines)
>>> content
{'line1\n', 'line2\n', 'line3\n'}

暫無
暫無

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

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