通过.m文件和Python进行读取会不断读取.m文件中的字符作为一行吗?

时间:2019-05-30 20:26:34

标签: python matlab

我正在尝试使用Python读取.m文件中的文本,并且当我使用file.readline()时,Python会继续读取.m文件中的单个字符作为一行。在将行添加到列表之前,尝试删除该行的某些部分也遇到了问题。

我已经尝试过为设置的循环调整readline的位置,因为我必须在程序中读取多个文件。不管我放在哪里,字符串总是以字符分隔。我是Python的新手,所以我正在努力学习如何做。

# Example of what I did
with open('MyFile.m') as f:
   for line in f:
       text = f.readline()
       if text.startswith('%'):
         continue
       else:
          my_string = text.strip("=")
          my_list.append(my_string)

这只是部分起作用,因为它仍然会返回我不需要的行的一部分,并且当尝试通过在输出的新行之间放置空格来格式化输出时,如下所示: 预期:“字符串” 发生了什么:“ Thr e S t r i n g”

2 个答案:

答案 0 :(得分:2)

没有输入文件,我不得不在这里做出一些猜测

输入文件:

%
The
%
String
%

解决方案:

my_list = []

with open('MyFile.m') as f:
    for line in f:
        if not line.startswith('%'):
            my_list.append(line.strip("=").strip())
print(' '.join(my_list))

readLine()调用是不必要的,因为for循环已使您获得该行。空的if被否定,只能捕获您关心的部分。没有您的实际输入文件,我将无法帮助'='部分。如果您有任何疑问,我们很乐意为您提供进一步的帮助。

答案 1 :(得分:0)

如Xander所建议,您不应该调用readline,因为for line in f会为您这样做。

my_list = []
with open('MyFile.m') as f:
   for line in f:
       line = line.strip()   # lose the \n if you want to
       if line.startswith('%'):
           continue
       else:
           my_string = line.strip("=")
           my_list.append(my_string)