我要完成的工作是在文本文件中的每一行插入新行。
我知道可以使用一个简单的编辑器来完成此操作,但是真正要做的是向每行添加一个增量值。
到目前为止,这是我的代码:
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
答案 0 :(得分:0)
您的代码有几个问题。
'\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 = '')
答案 1 :(得分:0)
这对我有用
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'给出/打印要添加/打印的所需行的功能。
->'i'每次调用get_my_line都会增加
-> 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