是否可以在一行中用“,”分隔内容并将其打印为单独的行
fd = open("data.txt", "r").readlines()
i = 0
for line in fd:
line = line.lstrip().rstrip().split(", ")[i]
print("Subject-%d: %s" % (i, line))
print("Name-%d: %s" % (i, line))
print("Fruit-%d: %s" % (i, line))
i += 1
文本文件包含以下内容:
People, Zeref, Apple
Greeks, Zues, Apricot
基本上,我要代码执行的操作是将文本文件分隔为“,”,然后将每个文件打印到新行上,这样它就会显示出来
Subject-0: People
Name-0: Zeref
Fruit-0: Apple
Subject-1: Greeks
Name-1: Zues
Fruit-1: Apricot
出于某种原因它只是说
Subject-0: People
Name-0: People
Fruit-0: People
Subject-1: Greeks
Name-1: Greeks
Fruit-1: Greeks
答案 0 :(得分:1)
line = line.lstrip().rstrip().split(", ")[i]
此行用逗号分隔行并采用第i个元素(它适用于i = 0,1,可能适用于2,但是一旦我变大,您将得到一个例外)
您实际上想做的是-
subject, name, fruit = line.lstrip().rstrip().split(", ")
然后打印每个变量,但更优雅的方法是使用csv reader
答案 1 :(得分:0)
您的代码当前不起作用的原因是,在您提供的示例中,您正在每行取一个固定项目(line = ...[i]
),而在打印两次之间i
不变不同的行。
假设您的文件始终包含相同的结构Subject, Name, Fruit
,我将使用zip()
遍历该行:
fd = open("data.txt", "r").readlines()
labels = ['Subject', 'Name', 'Fruit']
for line_num, line in enumerate(fd):
line = line.lstrip().rstrip()
for label, item in zip(labels, line.split(', '):
print("%s-%d: %s" % (label, line_num, item))
此外,我将用“更现代的”版本代替您的印刷声明:
print(f'{label}-{line_num}: {item}')
或者如果您使用的版本<3.6
print('{}-{}: {}'.format(label, line_num, item)
但这主要是个人喜好。