【发布时间】:2016-08-23 19:10:55
【问题描述】:
基于this answer,我使用changethis方法
import numpy as np
import os
def changethis(pos):
appex = sfile[pos[1]-1][:pos[2]] + '*' + file[pos[1]-1][pos[2]+len(pos[0]):]
file[pos[1]-1] = appex
pos = ('stack', 3, 16)
sfile = np.genfromtxt('in.cpp',dtype='str',delimiter=os.linesep)
changethis(pos)
print(file)
in.cpp 是一个源文件,其中包含以下内容:
/* Multi-line
comment
*/
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char *argv[]) {
int linecount = 0;
double array[1000], sum=0, median=0, add=0;
string filename;
if (argc <= 1)
{
cout << "Error" << endl;
return 0;
}
我得到了输出:
['using namespace std;' 'int main (int argc, char *argv[]) {'
'int linecount = *' 'double array[1000], sum=0, median=0, add=0;'
'string filename;' 'if (argc <= 1)' '{' 'cout << "Error" << endl;'
'return 0;' '}']
请注意,ndarray 中缺少 多行注释、include 语句 和 empty-lines 行.
我不明白为什么会发生这种情况,因为 delimiter 被设置为考虑每个换行符。
关于如何输出的任何建议:
['/* Multi-line' 'comment' '*/' '' '#include <iostream>',
'' '#include <fstream>' '' 'using namespace std;'
'' 'int main (int argc, char *argv[]) {'
'int linecount = *' 'double array[1000], sum=0, median=0, add=0;'
'string filename;' 'if (argc <= 1)' '{' 'cout << "Error" << endl;'
'return 0;' '}']
【问题讨论】:
-
无法重现您的错误。我得到所有非空行作为输出
-
你之前得到的答案很奇怪。
np.genfromtxt是一个奇怪的、不适合用于此目的的工具。 -
@M.T 我可能在我的问题末尾显示的“理想”输出中弄乱了几个逗号 - 将很快编辑。但是,缺少内容的输出与我在描述中描述的完全一样。
-
@user2357112 可能是这样,但公平地说,它就像我想要的那样工作;也就是说,如果我能让它按照这个问题的要求行事。如果你能提供另一种更合适的方法,那就太好了!
-
我想你想要空行?
标签: python numpy multidimensional-array