首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python编写文件,将内容移到新行

使用python编写文件,将内容移到新行
EN

Stack Overflow用户
提问于 2017-05-24 03:06:10
回答 3查看 1K关注 0票数 0

我正在尝试创建一个python程序来读取文件中的值,并以某种格式将它们写入另一个文件。让我详细解释一下我的任务!

我有一个在十六进制中有图像像素值的文件。

AA 12 C5 95 ..。

我想将这个值列表转换成这样的格式

0: AA; 1: 12; 2: C5; 3: 95; ..。

我随身带着以下代码

代码语言:javascript
运行
复制
def makeAddress(address, HEX):
    return str("\t%s    :   %s;" % (address, HEX));

imageFile = open("Image.txt", "r")
mifFile = open("INSTRUCTION_FILE.mif", "w")

address = 0;

for line in imageFile:
    mifFile.write(makeAddress(address, line))
    address = address + 1;

imageFile.close()
mifFile.close()

但是当我试图运行这个程序时,输出是;

0: AA 1: 12 2: C5 ;3: 95 ;.

为什么我不能让;与每一行内联,而不是把它放到第二行呢?有什么建议吗?:)提前谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-24 03:11:34

您从imageFile中读取的每一行都包含一个换行符。因此,用它作为HEX,就会在分号前面放一个换行符。由于.write不会自动添加另一个换行符,这就是为什么新行看起来只是被移动的原因。您需要的是去掉旧行中的换行符,并将其添加到新行中:

代码语言:javascript
运行
复制
for line in imageFile:
    mifFile.write(makeAddress(address, line.strip()) + "\n")
    address = address + 1;
票数 2
EN

Stack Overflow用户

发布于 2017-05-24 03:36:00

下面是您的代码的修改版本,可以工作。在您的示例中,每个数字之间有一个空行,因此我添加了一个测试来处理这个问题,因为这将导致不正确的输出。

代码语言:javascript
运行
复制
def makeAddress(address, HEX):
    return str("\t%s    :   %s;" % (address, HEX));

imageFile = open("Image.txt", "r")
mifFile = open("INSTRUCTION_FILE.mif", "w")

address = 0;

for line in imageFile:
    if line.strip(): # Checks if line is empty string
        mifFile.write(makeAddress(address, line.strip()) + "\n")
        address = address + 1;

imageFile.close()
mifFile.close()
票数 1
EN

Stack Overflow用户

发布于 2017-05-24 03:13:21

使用Pythonic方法,使用enumerate返回包含索引的迭代器,并使用strip()删除\n,然后join将返回字符串,这是序列seq中字符串的级联:

代码语言:javascript
运行
复制
open("output.txt","w").write("\n".join(["{} : {};".format(i,j.strip()) for i,j in enumerate(open('input'))]))

如果您想要一种可读的方式,上述代码相当于以下内容:

代码语言:javascript
运行
复制
with open('out.csv', 'r') as _input, open("output.txt", "w") as _output:
    lines = ["{} : {};".format(i, j.strip()) for i, j in enumerate(_input)]
    _output.write("\n".join(lines))

输出:

代码语言:javascript
运行
复制
0   :   AA;
1   :   12;
2   :   C5;
3   :   95;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44148266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档