如何在Python中将多行文本合并为一行,并用分隔符分隔?

10 投票
4 回答
35411 浏览
提问于 2025-04-16 16:26

我有一个文本文件,里面的内容是这样的:

line1
text1
text2
text3
line2
something1
something2

我想创建另一个文本文件,内容应该像这样:

line1|text1|text2|text3
line2|something1|something2

每当文本文件中的一行包含“line”这个词时,我想把它下面的每一行都加到这一行后面,用‘|’符号分隔。请问我可以用Python来实现这个吗?

4 个回答

3

这里有一行代码,它使用了 line1, line2, ...,但实际上并没有从那一行读取数字:

['|'.join(['line%d' % i] + x.strip('\n').split('\n')) for i, x in enumerate(re.split('line[0-9]+', l)) if x.strip('\n')]
3

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要把它们转换成一种程序能处理的格式。

比如说,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够使用这些信息,我们需要把它们转化为程序可以理解的对象或变量。这个过程就叫做“解析”。

解析的方式有很多种,具体取决于数据的格式。有些数据是结构化的,比如JSON或XML,这些格式有明确的规则,程序可以很容易地读取和处理。而有些数据可能是非结构化的,比如普通文本,这就需要我们自己去分析和提取有用的信息。

总之,解析就是把复杂的数据变得简单易懂,让程序能够顺利地使用这些数据。

def join_lines(lines, sent='line'):
    current = []
    for line in lines:
        if line.startswith(sent):
            yield current
            current = []

        current.append(line)
    yield current

# data = open('input.txt', 'rt')
data = """line1
text1
text2
text3
line2
something1
something2""".splitlines()

print ['|'.join(line) for line in join_lines(data) if line]
8

如果你的文件不是特别大

data=open("file").readlines()
for n,line in enumerate(data):
    if line.startswith("line"):
       data[n] = "\n"+line.rstrip()
    else:
       data[n]=line.rstrip()
print '|'.join(data)

撰写回答