-5

如何在 Python 中读取字符串的每一行并将选定的行存储为数组中的元素?

我想逐行读取文件,每一行都附加到数组的末尾。我在任何地方都找不到如何执行此操作,也找不到如何在 Python 中创建字符串数组。

例如:

第1行=

 abc def gef
 lmn qrt was
 lmh kjd lxm

 skd fdj djk
 ndz weg tdg
 ndg has dbg

 pef rah vdg
 pas dgh ghr
 bde ghx ore

我的输出应该是:

 line1[0]= abc def gef
           lmn qrt was
           lmh kjd lxm

 line1[1]= skd fdj djk
           ndz weg tdg
           ndg has dbg

 line1[2]= pef rah vdg
           pas dgh ghr
           bde ghx ore
4

3 回答 3

3
>>> line1 = """abc def gef
... lmn qrt was
... lmh kjd lxm
...
... skd fdj djk
... ndz weg tdg
... ndg has dbg
...
... pef rah vdg
... pas dgh ghr
... bde ghx ore"""
>>> line1.split("\n\n")
['abc def gef\nlmn qrt was\nlmh kjd lxm', 
 'skd fdj djk\nndz weg tdg\nndg has dbg', 
 'pef rah vdg\npas dgh ghr\nbde ghx ore']
>>> for number, item in enumerate(line1.split("\n\n")):
...     print("Line number {0}".format(number))
...     print(item)
...
Line number 0
abc def gef
lmn qrt was
lmh kjd lxm
Line number 1
skd fdj djk
ndz weg tdg
ndg has dbg
Line number 2
pef rah vdg
pas dgh ghr
bde ghx ore
>>>
于 2013-05-13T08:00:49.767 回答
0

像这样的东西:

line1="""abc def gef
lmn qrt was
lmh kjd lxm

skd fdj djk
ndz weg tdg
ndg has dbg

pef rah vdg
pas dgh ghr
bde ghx ore"""


lis = [""]
for line in line1.splitlines():
    if line.strip():
        lis[-1] += "\n"+ line
    else:
        if lis[-1] != "":
            lis.append("")


print lis[0]
print lis[1]
print lis[2]

输出:

abc def gef
lmn qrt was
lmh kjd lxm

skd fdj djk
ndz weg tdg
ndg has dbg

pef rah vdg
pas dgh ghr
bde ghx ore
于 2013-05-13T08:04:03.927 回答
0

这将打开一个文件并将所有行读入名为lines. 它还会为您删除尾随的新行。

with open('<<FILENAME>>', 'r') as file:
    lines = [line.rstrip() for line in file.readlines()]

剖析:

with open...

表示您正在打开 FILENAME 进行'r'读取,并命名生成的文件对象file。它会在它下面的块完成后为你销毁。

lines =

将右侧的表达式分配给lines

[line.rstrip() for line in file.readlines()]

根据文件内容创建列表:

  1. line.rstrip()结果中的每一行都会发生file.readlines()它删除尾随的新行。
  2. for line in是枚举某事物的结果的方式(参见Python List Comprehensions)。
  3. file.readlines()返回由新行拆分的所有行(及其行结尾)的列表。
于 2013-05-14T19:31:10.983 回答