[英]Insert a new line string on every blank line in python
我要完成的工作是在文本文件中的每一行插入空白。
我知道可以用一個簡單的編輯器完成此操作,但是真正要做的是向每行添加一個增量值。
到目前為止,這是我的代碼:
import fileinput
import re
count = 0
for line in fileinput.input():
line = re.sub('\n\r', '\n\r\n\rmyline' + str(count), line.rstrip())
count+=1
print(line)
由於某些原因,我無法用內容替換換行符。 也只嘗試了/ n或/ r但沒有成功
現場示例:
初始文本文件:
line1
line2
line3
morelines
最終結果:
line1
line2
myline1
line3
myline2
myline3
morelines
您的代碼有幾個問題。
'\\n'
,因此您的代碼將永遠不會看到'\\r'
。 '\\r\\n'
而不是'\\n\\r'
。 '\\n\\n'
(或'\\r\\n\\r\\n'
)。 line.rstrip()
。 rstrip
會刪除所有結尾的空格,包括'\\n'
和'\\r'
,因此即使將其更改為'\\n'
,您的正則表達式也不會匹配任何內容。 未經測試:
import fileinput
count = 0
for line in fileinput.input():
if line.rstrip() == '':
count += 1
print('myline' + str(count))
else:
print(line, end = '')
這對我有用
def get_my_line(line_no):
print("myline {}".format(line_no))
path = 'test.txt'
f = open(path)
i = 0
was_prev_text_new_line = False
for foo in f.readlines():
if (foo.__eq__("\n")):
if (was_prev_text_new_line):
i += 1
get_my_line(i)
was_prev_text_new_line = True
else :
print(foo.replace("\n", ""))
was_prev_text_new_line = False
i += 1
get_my_line(i)
這里的邏輯是:-> get_my_line是基於var'i'給出/打印要添加/打印的所需行的函數。
->每次我們調用get_my_line時,“ i”都會增加
-> f.readlines讀取每個新行並存儲在foo中(即,它檢測到“ \\ n”)
->如果foo為'\\ n',則表示,我們有一個非文本行。
->這里的方法是在每個語句后添加新行,如果foo僅是'\\ n',則檢查上一個txt是否為'\\ n'(這有助於我們跳過后面的第一個'\\ n'包含文本的行,對於后續的連續“ \\ n”,我們可以添加新行)
->如果was_prev_text_new_line為true,則調用get_my_line並遞增i
->在if塊的末尾將'was_prev_text_new_line'設置為true
->如果foo不是('\\ n'),則只需打印foo,獲取要添加的新行並遞增i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.