从Python到C的移植#

2024-09-27 00:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从Python/PHP的背景学习C,并尝试从Python移植一个脚本到入门。在

该脚本逐行读取一个文本文件(大约150K行),应用一个regex列表,直到其中一个匹配为止,获得命名组结果并将值作为类的属性添加。在

以下是数据的外观(以“No”开头的每一行都是新记录的开始):

No.813177294  09/01/1987  150
Tit.INCAL INDÚSTRIA DE CALÇADOS LTDA (BR/PE)
*PARÁGRAFO ÚNICO DO ART. 162 DA LPI.
Procurador: ROBERTO C. FREIRE

No.901699870  02/06/2009  LD6
*Exigência Formal não respondida, Pedido de Registro de Marca considerado inexistente, de acordo com o Art. 157 da LPI

No.830009817  12/12/2008  003
Tit.BIOLAB SANUS FARMACÊUTICA LTDA. (BR/SP)
C.N.P.J./C.I.C./NºINPI : 49475833000106
Apres.: Nominativa ; Nat.: De Produto
Marca: ENXUG
NCL(9) 05 medicamentos para uso humano; preparações farmacêuticas; diuréticos, analgésicos;
anestésicos; anti-helmínticos; antibióticos; hormônios para uso medicinal.
Procurador: CRUZEIRO/NEWMARC PATENTES E MARCAS LTDA

以及正则表达式的外观:

^{pr2}$

现在我的问题是:

1)我是否可以使用相同的概念,在每一行中应用Dictionary<string, Regex>中的每一个,直到一个匹配为止?在

2)如果我这样做,有没有办法得到命名组结果的Dictionary<string, string>?(在这个阶段,我可以把一切都当作一根弦)。在

3)如果我有这样的课。。。在

class Record
{
    public string Number { get; set; }
    public string Date { get; set; }
    public string Code { get; set; }
    public string Ncl { get; set; }
    public string Especification { get; set; }
    public string Document { get; set; }
    public string Description { get; set; }
}

…有没有办法用命名组的值来设置属性?在

4)我完全忽略了这一点,试图用静态类型化语言编写代码,但仍然在动态类型化语言中思考?如果是这样,我能做什么?在

很抱歉这个有点冗长的问题。我真的试着继续把这段话缩短些:-)

提前谢谢。在


Tags: br脚本getstring属性depublic命名
3条回答

很抱歉,这不是一个具体的答案,但是您可以使用IronPython将您的脚本转换为在CLR下运行,然后转到C?在

1.当然

2.参见示例here

是的,基本概念和2相同

4.不,C#足够灵活,可以让您将您的架构移植到

还要考虑研究this book作为Python程序员对.NET最好的介绍,反之亦然(我有偏见,曾是一名技术编辑,也是作者的朋友,但我认为这在客观上是站得住脚的;-)。在

  1. 是的,你可以。在
  2. .Net支持命名组。因此对于(?<first>group)(?'second'group),返回的Match对象将支持这样的命名检索。您可以从此对象构建词典,也可以直接传递匹配对象
    var match = Regex.Match("subject", "regex");
    var matchedText = match.Groups("first")

    参见Named Groups in .Net和{a2}
  3. 我认为写一个Record Record.Parse(namedValueCollection)是一种方法
  4. 你写代码。。。你学会了。我觉得相反的方向有点让人迷惑。。从动态到静态应该相对容易些。。。只是你可能需要为一些常规任务编写相对较多的代码,比如迭代、映射或选择等

相关问题 更多 >

    热门问题