:) Это может показаться вам очень длинным вопросом, я понимаю, но поверьте мне, это не долго. Я не могу определить, почему после обработки этот текст не может быть прочитан и отредактирован. Я попытался использовать функцию ord () в python, чтобы проверить, содержит ли текст какие-либо символы Unicode (не символы ascii), кроме ascii .. Я нашел их довольно много.
У меня сильное чувство, что это может быть связано с самим исходным текстом (ВХОД).
Входной файл: просто скопируйте и вставьте его в файл " acle5v1.txt "
Целью этого кода ниже является проверка символов верхнего регистра и преобразование его в символы нижнего регистра, а также удаление всех знаков препинания, чтобы эти слова были взяты для дальнейшей обработки для выравнивания слов
#include<iostrea>
#include<fstream>
#include<ctype.h>
#include<cstring>
using namespace std;
ifstream fin2("acle5v1.txt");
ofstream fin3("acle5v1_op.txt");
ofstream fin4("chkcharadded.txt");
ofstream fin5("chkcharntadded.txt");
ofstream fin6("chkprintchar.txt");
ofstream fin7("chknonasci.txt");
ofstream fin8("nonprinchar.txt");
int main()
{
char ch,ch1;
fin2.seekg(0);
fin3.seekp(0);
int flag = 0;
while(!fin2.eof())
{
ch1=ch;
fin2.get(ch);
if (isprint(ch))// if the character is printable
flag = 1;
if(flag)
{
fin6<<"Printable character:\t"<<ch<<"\t"<<(int)ch<<endl;
flag = 0;
}
else
{
fin8<<"Non printable character caught:\t"<<ch<<"\t"<<int(ch)<<endl;
}
if( isalnum(ch) || ch == '@' || ch == ' ' )// checks for alpha numeric characters
{
fin4<<"char added: "<<ch<<"\tits ascii value: "<<int(ch)<<endl;
if(isupper(ch))
{
//tolower(ch);
fin3<<(char)tolower(ch);
}
else
{
fin3<<ch;
}
}
else if( ( ch=='\t' || ch=='.' || ch==',' || ch=='#' || ch=='?' || ch=='!' || ch=='"' || ch != ';' || ch != ':') && ch1 != ' ' )
{
fin3<<' ';
}
else if( (ch=='\t' || ch=='.' || ch==',' || ch=='#' || ch=='?' || ch=='!' || ch=='"' || ch != ';' || ch != ':') && ch1 == ' ' )
{
//fin3<<" ';
}
else if( !(int(ch)>=0 && int(ch)<=127) )
{
fin5<<"Char of ascii within range not added: "<<ch<<"\tits ascii value: "<<int(ch)<<endl;
}
else
{
fin7<<"Non ascii character caught(could be a -ve value also)\t"<<ch<<int(ch)<<endl;
}
}
return 0;
}
У меня есть код , аналогичный приведенному выше написанному на python, который дает мне результат, который снова не читается и не редактируется
Код на python выглядит так:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
input_file=sys.argv[1]
output_file=sys.argv[2]
list1=[]
f=open(input_file)
for line in f:
line=line.strip()
#line=line.rstrip('.')
line=line.replace('.','')
line=line.replace(',','')
line=line.replace('#','')
line=line.replace('?','')
line=line.replace('!','')
line=line.replace('"','')
line=line.replace('।','')
line=line.replace('|','')
line = line.lower()
list1.append(line)
f.close()
f1=open(output_file,'w')
f1.write(' '.join(list1))
f1.close()
файл принимает ip и op во время выполнения .. as:
python punc_remover.py acle5v1.txt acle5v1_op.txt
Выходные данные этого файла находятся в "acle5v1_op.txt"
теперь после обработки этот конкретный выходной файл необходим для дальнейшей обработки. Этот конкретный файл "aclee5v1_op.txt" является НЕЗАКАЗАННЫМ И НЕОБХОДИМЫМ файлом, который я не могу использовать для дальнейшей обработки. Мне это нужно для выравнивания слов в НЛП. Я попытался прочитать этот вывод с помощью следующей программы
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin1("acle5v1_op.txt");
ofstream fout1("chckread_acle5v1_op.txt");
ofstream fout2("chcknotread_acle5v1_op.txt");
int main()
{
char ch;
int flag = 0;
long int r = 0; long int nr = 0;
while(!(fin1))
{
fin1.get(ch);
if(ch)
{
flag = 1;
}
if(flag)
{
fout1<<ch;
flag = 0;
r++;
}
else
{
fout2<<"Char not been able to be read from source file\n";
nr++;
}
}
cout<<"Number of characters able to be read: "<<r;
cout<<endl<<"Number of characters not been able to be read: "<<nr;
return 0;
}
, который печатает символ, если он читается, а если нет, то не печатает их, но я заметил, что вывод обоих файлов пуст, поэтому я могу сделать вывод, что этот файл "acle5v1_op.txt" НЕРАЗРЕШЕН И НЕ УДАЛЕН. Не могли бы вы помочь мне, как справиться с этой проблемой ..
Чтобы рассказать вам немного о статистике по сравнению с исходным входным файлом "acle5v1.txt", он содержит около 3441 строки и около 3 миллионов символов.
Имея в виду, что количество символов в файле, который вы редактируете, может / может не быть в состоянии открыть файл .. Мне удалось открыть файл в gedit Fedora 10, который я сейчас использую .. Это просто чтобы предупредить вас, что открытие с определенным редактором не было проблемой, по крайней мере, в моем случае ...
Могу ли я использовать языки сценариев, такие как Python и Perl, для решения этой проблемы, если да, то как? могли бы быть конкретны в этом отношении, так как я новичок в Perl и Python. Или не могли бы вы сказать мне, как я могу решить эту проблему с помощью самого C ++ ... Спасибо ... :) Я действительно с нетерпением жду некоторой помощи или руководства о том, как решить эту проблему ....