Python re.sub 不替换换行符
Python re.sub does not replace newline
我有一些这样的文字:
<Row 1 Having A Text>
<Row 2 Having B Text>
<Row 3 Having C Text>
我正在尝试完全移除并向上移动。
我一直在尝试使用这个:
for line in fileinput.input(new_name, inplace=True):
print (re.sub(r'<Row 2.*[\r\n]*', '', line.strip()))
但是,这只会导致以下结果:
<Row 1 Having A Text>
<Row 3 Having C Text>
并且第 3 行没有向上移动。我在这里错过了什么?
您的问题是,即使您的正则表达式匹配并用空字符串 (''
) 替换 line
的内容,print('')
也会输出一个空行。不是打印每一行,而是只打印不以 <Row 2
开头的行
for line in fileinput.input(new_name, inplace=True):
if not line.strip().startswith('<Row 2'):
print(line)
print()
即使内容为空也会输出 LF,因此您将 'Row 2' 替换为空字符串,但由于您仍然使用 print
,因此您会得到一个空行输出。
您可以检查是否有空行:
for line in fileinput.input(new_name, inplace=True):
output = re.sub(r'<Row 2.*[\r\n]*', '', line.strip())
if len(output) :
print(output)
我有一些这样的文字:
<Row 1 Having A Text>
<Row 2 Having B Text>
<Row 3 Having C Text>
我正在尝试完全移除并向上移动。
我一直在尝试使用这个:
for line in fileinput.input(new_name, inplace=True):
print (re.sub(r'<Row 2.*[\r\n]*', '', line.strip()))
但是,这只会导致以下结果:
<Row 1 Having A Text>
<Row 3 Having C Text>
并且第 3 行没有向上移动。我在这里错过了什么?
您的问题是,即使您的正则表达式匹配并用空字符串 (''
) 替换 line
的内容,print('')
也会输出一个空行。不是打印每一行,而是只打印不以 <Row 2
for line in fileinput.input(new_name, inplace=True):
if not line.strip().startswith('<Row 2'):
print(line)
print()
即使内容为空也会输出 LF,因此您将 'Row 2' 替换为空字符串,但由于您仍然使用 print
,因此您会得到一个空行输出。
您可以检查是否有空行:
for line in fileinput.input(new_name, inplace=True):
output = re.sub(r'<Row 2.*[\r\n]*', '', line.strip())
if len(output) :
print(output)