读取文件直到python中的特定字符

时间:2017-12-21 14:29:26

标签: python python-3.x

我目前正在开发一个应用程序,它需要从文件中读取所有输入,直到遇到某个字符。

使用代码:

file=open("Questions.txt",'r')
c=file.readlines()
c=[x.strip() for x in c]

每次条带遇到\n时,它都会从输入中删除,并被视为列表c中的字符串。

这意味着每一行都被分成列表c的一部分。但我想在遇到特殊字符的时候制作一个列表

如果输入文件包含以下内容:

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1

然后我想得到一个列表 c=['1.Hai\n2.Bye','3.Hello\n4.OApd']

请帮我这样做。

2 个答案:

答案 0 :(得分:3)

最简单的方法是将文件作为单个字符串读取,然后将其拆分到分隔符中:

with open('myFileName') as myFile:
  text = myFile.read()
result = text.split(separator)  # use your \-1 (whatever that means) here

如果您的文件非常大,将内存中的完整内容作为单个字符串保存以使用.split()可能是不可取的(然后在分割之后将完整内容保留在列表中可能也是不可取的)。然后你可以把它读成块:

def each_chunk(stream, separator):
  buffer = ''
  while True:  # until EOF
    chunk = stream.read(CHUNK_SIZE)  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split(separator, 1)
      except ValueError:
        break
      else:
        yield part

with open('myFileName') as myFile:
  for chunk in each_chunk(myFile, separator='\\-1\n'):
    print chunk  # not holding in memory, but printing chunk by chunk

答案 1 :(得分:0)

我用过" *"而不是" -1",我会让你做出适当的改变。

s = '1.Hai\n2.Bye*3.Hello\n4.OAPd*'
temp = ''
results = []

for char in s:
    if char is '*':
        results.append(temp)
        temp = []
    else:
        temp += char

if len(temp) > 0:
    results.append(temp)