从txt读取的字符串。该代码删除其中的页码。有用。
问题是如何删除偶数字符串中的每个换行符号。还有可能删除每个字符串的换行符,以数字结尾,将数字和单词统一为一个?
testfile.txt的示例:
0000.0000.3214.6550
Chineese citizen
0000.0000.1264.2020
Dodge Challenger
1
所需的output.txt :
0000.0000.3214.6550 Chineese citizen
0000.0000.1264.2020 Dodge Challenger
我甚至尝试过正则表达式,但它总是删除第一个字符串后的所有内容。就像这样。
x = 1
with open("testfile.txt", "r") as input:
with open("out.txt", "w") as output:
for line in input:
line = line.strip() #whitespace clearing
try:
int(line) #checking
except ValueError:
output.write(line + "\n")
x + x + 1
for line in input:
line = line.replace("\n", "")
答案 0 :(得分:2)
这个(没有花哨的东西):
with open("out.txt", "w") as output:
odd_line = True
with open("testfile.txt", "r") as input:
for line in input:
if odd_line:
s = line.strip() # save to a variable
else:
output.write('{} {}'.format(s, line) # append to output after concatenating
odd_line = not odd_line
答案 1 :(得分:1)
这是一个简单的实现:
# Read in all lines
with open('testfile.txt') as f:
lines = f.readlines()
# The lines end with a newline. Remove this for every other line.
lines = [line if i%2 else line.rstrip('\r\n') + ' '
for i, line in enumerate(lines)]
# Combine modified lines
text = ''.join(lines)
# Write to file
with open('output.txt', 'w') as f:
f.write(text)
最后一个字符('\n'
或'\r\n'
)在偶数行中删除,其中偶数行由i%2
确定为假(实际为0
) ,其中i
是行号。另外,我们添加一个空格代替换行符。
答案 2 :(得分:0)
这应该有所帮助。
s = """0000.0000.3214.6550
Chineese citizen
0000.0000.1264.2020
Dodge Challenger"""
res = []
for i, v in enumerate(s.split("\n")): #Using enumerate to find index
v = v.strip()
if not res: #Check if list is empty
res.append(v)
else:
if i%2 != 0: #Check odd-even number of line
res[-1] = res[-1] + " " + v
else:
res.append(v)
for i in res:
print(i)
输出:
0000.0000.3214.6550 Chineese citizen
0000.0000.1264.2020 Dodge Challenger
答案 3 :(得分:0)
以下内容应使用您分享的文字回答您的第一个问题:
如何删除偶数字符串中的每个换行符号?
import io
text = """0000.0000.3214.6550
Chineese citizen
0000.0000.1264.2020
Dodge Challenger"""
with io.StringIO(text) as input, open("out.txt", "w") as output:
for i, line in enumerate(input, 1):
if i % 2 != 0:
print(line.strip("\n"), end="\t", file=output)
else:
print(line, end="", file=output)
如果行号为奇数,则enumerates
文本行和strips
。这将删除换行符,并使用print
,用标签替换它们。你可以为这个替代品选择你想要的任何其他角色。
还可以删除每个字符串的换行符 将数字和单词统一为一个数字?
with io.StringIO(text) as input, open("out.txt", "w") as output:
for line in input:
if line[-2].isdigit():
print(line.strip("\n"), end="\t", file=output)
else:
print(line, end="", file=output)
这个与前一个很相似,唯一的区别是你在这里检查每行的换行符之前的字符是否为数字。
请注意,如果您正在使用python2,则需要在脚本顶部导入print
函数,如下所示:
from __future__ import print_function
我希望这证明有用。