Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python在文件的特定列中编写一些值/字符串_Python_File Io_File - Fatal编程技术网

如何用python在文件的特定列中编写一些值/字符串

如何用python在文件的特定列中编写一些值/字符串,python,file-io,file,Python,File Io,File,我有一些值,我想写在一个文本文件中,约束条件是每个值必须转到每行的特定列 例如,假设我有值=[a,b,c,d],我想把它们写在一行中,这样a将被写在该行的第10列,b在第25列,c在第34列,d在第48列 在python中如何实现这一点 python是否有类似于column.insert(10,a)?这会让我的生活更轻松 我很欣赏你的hep。在这种情况下,我认为你应该使用python的填充函数 类似于“%10d%15d%9d%14d”%values的内容会将a、b、c、d的最右边数字放在您列出的

我有一些值,我想写在一个文本文件中,约束条件是每个值必须转到每行的特定列

例如,假设我有
值=[a,b,c,d]
,我想把它们写在一行中,这样a将被写在该行的第10列,b在第25列,c在第34列,d在第48列

在python中如何实现这一点

python是否有类似于
column.insert(10,a)
?这会让我的生活更轻松


我很欣赏你的hep。

在这种情况下,我认为你应该使用python的填充函数

类似于
“%10d%15d%9d%14d”%values
的内容会将a、b、c、d的最右边数字放在您列出的列上


如果您想将最左边的数字放在那里,那么您可以使用:
“%您可以使用
mmap
模块来
内存映射文件

使用
mmap
可以执行以下操作:

fh = file('your_file', 'wb')
map = mmap.mmap(fh.fileno(), <length of the file you want to create>)
map[10] = a
map[25] = b
如果您需要列在不同的行之间变化,那么您可以做一行

import itertools

for columns in itertools.combinations(range(10), 3):
    print ColumnWriter(columns).get_row(('.','.','.'))
它放松了错误检查。它需要检查
columns
是否已排序,以及
len(value)==len(columns)

它的值比分配用来容纳它的区域长,但我不确定该怎么办。当前如果出现这种情况,它会覆盖上一列。例如:

print ColumnWriter((1, 2, 3)).get_row((1, 1, 'aa'))
如果您有一组要写入文件的行,您可以这样做

rows = [(1, 3, 4), ('a', 'b', 4), ['foo', 'ten', 'mongoose']]

format = ColumnWriter((20, 30, 50)).get_row
with open(filename, 'w') as fout:
    fout.write("\n".join(format(row) for row in rows))

你能给出一个使用csv模块控制文本文件中一列宽度的非复杂示例吗?例如,使列宽为两个10个字符?这是OP想要的。如果OP想要这样,我就误解了。我以为他指的是固定数量的列。在这种情况下,我有另一个解决方案:)-1.1)你必须知道w文件长度提前。2)不兼容跨平台。3)需要以二进制模式打开文件。@AaronMcSmooth:1.操作2给出了可接受与否的判断。没有给出平台。3.是的,但这不一定是个问题。这只是一个替代解决方案,似乎比编写有关的解决方案更有用字符串格式与这里的其他解决方案基本相同。实际上,这是一个棘手的部分。文件中值的输出不取决于值之间的空格。它取决于行中每个值应该写入的特定列。我想我不太理解这种关系。你是想把所有的值排成一行吗?或者正在写入的值和空格数之间有什么关系吗(除了填充要求)?我想我是在寻找像你的答案一样的smth。非常感谢jkerian!
import itertools

for columns in itertools.combinations(range(10), 3):
    print ColumnWriter(columns).get_row(('.','.','.'))
print ColumnWriter((1, 2, 3)).get_row((1, 1, 'aa'))
rows = [(1, 3, 4), ('a', 'b', 4), ['foo', 'ten', 'mongoose']]

format = ColumnWriter((20, 30, 50)).get_row
with open(filename, 'w') as fout:
    fout.write("\n".join(format(row) for row in rows))