首页 > 解决方案 > 如何在 python 中识别 C++ 的 char(255)?

问题描述

我用 C++ 编写了一个解析器,它解析文本并将重要内容保存在其他文件中。

由于解析后的文本中可能存在所有可能的字符,因此我需要一个特定的分隔符来描述各个字段的起点和终点。

在 C++ 中,我使用了 delimiter char(255),因为我看到对于UTF-8文本,它对应FF于十六进制并且它不与任何符号相关联。

现在我在尝试识别char(255)python 文件中的 时遇到了麻烦,我将分隔符定义为chr(255)因为它不将其识别为特殊字符。

在 C++ 中,该字符的用法如下:

#define DELIM char(255)
#define FOLDER string(./folder/)
#define FILE FOLDER + "file_in_folder.csv"
...

using namespace std;

fstream f;

string delim_row = string(1, DELIM) + DELIM;
if(!std::filesystem::exists(FOLDER))
   std::filesystem::create_directories(FOLDER);
f.open(FILE, std::fstream::in | std::fstream::out | std::fstream::app);
if (!f){
   f.open(FILE, std::fstream::in | std::fstream::out | std::fstream::trunc);
   f << "1st_field" << DELIM << "2nd_field" << DELIM << "3rd_field" << DELIM << "4th_field" << delim_row;
}
for(auto mv : this->my_vector)
   f << mv.1st_field << DELIM << mv.2nd_field << DELIM << mv.3rd_field << DELIM << mv.4th_field << delim_row;
f.close();

现在,相反,在 Python 3 中,我尝试使用以下代码,它不会破坏单行中的各个字段并且无法在行和字段之间进行识别。

arr = []
with open(operations + "file_in_folder.csv", "r") as input_f:
    reader = csv.reader(input_f, delimiter=DELIMITER)
    for row in reader:
        arr.append(row)

我不明白我是否在 C++ 或 Python 代码中做错了假设。你能帮助我吗?

非常感谢。

标签: pythonc++

解决方案


推荐阅读