从txt python中的每个偶数字符串中删除换行符

时间:2018-03-31 14:15:02

标签: python string text newline

从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", "")

4 个答案:

答案 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

我希望这证明有用。