如何在Python中将多行文本合并为一行,并用分隔符分隔?
我有一个文本文件,里面的内容是这样的:
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)