天道酬勤,学无止境

parsing

有没有办法更好地解析字符串?(Is there a way to parse strings better?)

问题 我想知道 .NET 中是否有内置的方法来解析字符串的位。 以我有以下字符串为例: "bsarbirthd0692" 由以下部分组成,稍后将交叉引用数据: Indexes Purpose 0-3 (name) 4-9 (description) 10-13 (date mm-yy) 我希望有一些本土的东西,比如: string name, desc, date; string.ParseFormat("{0:4}{1:5}{2:4}", "bsarbirthd0692", out name, out desc, out date); 在 .NET 或流行的库中是否有一种本机方法可以做到这一点? 回答1 由于格式已知,不应更改 Substring 应该适合您 string data = "bsarbirthd0692"; string name, desc, date; name = data.Substring(0, 4); desc = data.Substring(4, 6); date = data.SubString(10); 编辑 您还可以创建扩展方法来执行您想要的操作。 这显然比之前的建议更复杂 public static class StringExtension { /// <summary> /// Returns a string array of the

2021-09-20 03:16:22    分类:技术分享    c#   .net   string   parsing

Instagram API - 仅检索视频(Instagram API - Retrieve Only Videos)

问题 我只需要检索带有特定主题标签的视频。 我知道没有任何方法可以只检索视频,但是我怎么能解析我返回的 JSON 对象并且只使用视频? 我一直在检查数组,但没有看到任何可以可靠地用来确定结果是视频还是照片的字段(即,类似于:['type'] => 'image' 会非常有帮助) ,如果它存在)。 公平地说,这是一个巨大的数组,我可能会遗漏一些明显的东西。 那么:有没有办法解析所有结果并只使用视频? (然后我会将这些结果放入一个新数组中以实际使用) 提前致谢! 回答1 显然我错过了它! 不仅有办法做到这一点,而且这正是我询问的假设方式。 有一个名为 ['type'] 的字段可以等于 'video' 或 'image'(或其他可能)。 所以,对于任何想和我做同样事情的人,你可能想写这样的东西: foreach ($obj->data as $post) { // check media type and skip this result if $media_type = $post->type; if($media_type != 'video'){ continue; } }

2021-09-20 02:22:47    分类:技术分享    php   json   parsing   instagram   instagram-api

您认为 Google 日历中的“快速添加”功能如何运作?(How do you think the “Quick Add” feature in Google Calendar works?)

问题 我正在考虑一个项目,该项目可能使用类似于“快速添加”如何处理将自然语言解析为可以通过某种语义级别理解的内容的功能。 我有兴趣更好地理解这一点,并想知道您对如何实现这一点有何想法。 如果您不熟悉“快速添加”是什么,请查看 Google 的知识库。 6/4/10 更新关于“自然语言解析”(NLP)的额外研究产生的结果比我认为在“快速添加”之类的东西中实际实现的结果要广泛得多。 鉴于此功能需要特定类型的输入而不是真正的自由格式文本,我认为这是 NLP 的一个更窄的实现。 如果有人能建议我可以研究的更狭窄的主题,而不是 NLP 的整个范围,我将不胜感激。 也就是说,我找到了很多关于 NLP 的资源,包括这个很棒的常见问题解答。 回答1 我将首先决定一种标准方式来表示我感兴趣的所有信息:事件名称、开始/结束时间(和日期)、客人名单、位置。 例如,我可能会使用这样的 XML 表示法: <event> <name>meet Sam</name> <starttime>16:30 07/06/2010</starttime> <endtime>17:30 07/06/2010</endtime> </event> 然后,我的目标是建立一个关于日期的日记条目的语料库,并用它们的 XML 形式进行注释。 我将如何收集数据? 好吧,如果我是谷歌,我可能会有各种各样的方法。 既然我是我

2021-09-20 01:05:00    分类:技术分享    parsing   nlp   google-calendar-api

任何 .NET Parse 方法都可以处理以“0x”为前缀的十六进制字符串吗?(Can any of the .NET Parse methods handle a hex string prefixed with “0x”?)

问题 我尝试使用 .NET Int64.Parse 方法解析一个数字,但它不会接受像“0x3039”这样的字符串,即使这是您在 C# 中编写常量的方式。 该文档明确禁止字符串具有“0x”前缀,并且尾随的“h”似乎也不起作用。 要解析一个十六进制数,我必须使用System.Globalization.NumberStyles.HexNumber选项。 如果有人直接知道Int64.Parse()不能接受带有“0x”前缀的字符串,请告诉我。 回答1 文档给出了支持的数字格式的表达式,因此十六进制数字不允许使用前缀和后缀。 Convert.ToInt32(String, Int32) 在使用基数 16 时支持前缀0x和0X 。 回答2 不,它不会接受 0x。 甚至还有一个 AllowHexSpecifier 选项,但出于某种原因,这只是意味着 af 数字并且仍然希望您去除 0x 部分。 回答3 很抱歉对一个旧问题的回答晚了,但这个问题是第一个出现在搜索“[.net] 0x 前缀”的问题。 是的,至少有一组标准 .NET 函数可以正确处理以“0X”前缀开头的十六进制字符串。 从 .NET framework 1.1 开始,System.ComponentModel 命名空间中的 Int64Converter、Int32Converter、Int16Converter 和

2021-09-20 00:38:04    分类:技术分享    .net   string   parsing   hex

任何 .NET Parse 方法都可以处理以“0x”为前缀的十六进制字符串吗?(Can any of the .NET Parse methods handle a hex string prefixed with “0x”?)

问题 我尝试使用 .NET Int64.Parse 方法解析一个数字,但它不会接受像“0x3039”这样的字符串,即使这是您在 C# 中编写常量的方式。 该文档明确禁止字符串具有“0x”前缀,并且尾随的“h”似乎也不起作用。 要解析一个十六进制数,我必须使用System.Globalization.NumberStyles.HexNumber选项。 如果有人直接知道Int64.Parse()不能接受带有“0x”前缀的字符串,请告诉我。 回答1 文档给出了支持的数字格式的表达式,因此十六进制数字不允许使用前缀和后缀。 Convert.ToInt32(String, Int32) 在使用基数 16 时支持前缀0x和0X 。 回答2 不,它不会接受 0x。 甚至还有一个 AllowHexSpecifier 选项,但出于某种原因,这只是意味着 af 数字并且仍然希望您去除 0x 部分。 回答3 很抱歉对一个旧问题的回答晚了,但这个问题是第一个出现在搜索“[.net] 0x 前缀”的问题。 是的,至少有一组标准 .NET 函数可以正确处理以“0X”前缀开头的十六进制字符串。 从 .NET framework 1.1 开始,System.ComponentModel 命名空间中的 Int64Converter、Int32Converter、Int16Converter 和

2021-09-20 00:36:01    分类:技术分享    .net   string   parsing   hex

Scrapy:通过 Javascript 获取内容集(Scrapy: Fetching the content set via Javascript)

问题 我正在尝试抓取此 URL。 它通过 Javascript 从 130 到 154.99 更改成本。 当您看到 Price DOM 的查看源时,它看起来像: <span id="item_price_6516">£130.00</span> 它绝对是通过 JavaScript 设置的。 如何通过scrapy获取正确的值? 我试图获取价值的方式是: price = hxs.select('//*[@id="display_price"]/span[2]/text()').extract() 回答1 价格是在您在浏览器中加载页面时执行的 javascript 的帮助下构建的。 所需的价格实际上在一个script标签内,您可以使用 Scrapy 找到它,使用正则表达式提取包含价格的对象,通过 JSON 加载它并获取价格。 来自 Scrapy Shell 的演示: $ scrapy shell http://www.bedstore.co.uk/p/Diamante_Faux_Leather_Bed_Frame.htm In [1]: import re In [2]: import json In [3]: pattern = re.compile(r"qubit_product_list = (.*?);", re.M) In [4]: script = response

2021-09-20 00:21:31    分类:技术分享    javascript   python   parsing   web-scraping   scrapy

Regex PHP - 替换名称中的颜色 - 但前提是它们是颜色而不是公司名称的一部分(Regex PHP — replace colors in a name — but only if they are in colors and not part of company names)

问题 对于输入项,我有几种可能性: “黑色和蓝色玩具”(黑色和蓝色是颜色)==>“玩具” “银勺”(银是一种颜色)==>“勺子” “黑色和德克钻系统”(注意,黑色不是颜色——它是品牌名称的一部分——黑色和德克)==>“黑色和德克钻系统” “红车”(红色是一种颜色)==>“车” 我想做的事 用“”替换颜色——但前提是它是一种颜色。 所以对于上面的#3,我不想更换黑色,因为它是品牌的一部分。 在 3 中的“和”之后,它不是颜色,因此我可以推断它是名称的一部分。 现在的问题是我该怎么做? :) $common_terms_to_replace_for_tag_search = array("green","blue","grey","gray","black","red","silver","maroon","violet","white"); $term = str_replace($common_terms_to_replace_for_tag_search," ",$term); 但是,以上代码仅适用于示例案例 1、2、4 - 而不适用于案例 3。我如何更新代码更新以适用于上述案例 3? 非常感谢! 回答1 我建议将这些颜色转换为正则表达式列表,然后像这样运行preg_replace : <?php $string = 'black toshiba'; $all_color

2021-09-20 00:20:52    分类:技术分享    php   regex   parsing

PyParsing:Combine() 做什么?(PyParsing: What does Combine() do?)

问题 有什么区别: foo = TOKEN1 + TOKEN2 和 foo = Combine(TOKEN1 + TOKEN2) 谢谢。 更新:根据我的实验, Combine()似乎是用于终端,您试图在其中构建一个表达式来匹配,而普通+用于非终端。 但我不确定。 回答1 组合有两种效果: 它将所有标记连接成一个字符串它要求匹配的标记全部相邻,中间没有空格 如果你创建一个表达式 realnum = Word(nums) + "." + Word(nums) 然后realnum.parseString("3.14")将返回 3 个标记的列表:前导 '3'、'.' 和尾随 '14'。 但是如果你把它包装在Combine中,如: realnum = Combine(Word(nums) + "." + Word(nums)) 然后realnum.parseString("3.14")将返回 '3.14' (然后您可以使用解析操作将其转换为浮点数)。 由于Combine 抑制了pyparsing 在标记之间的默认空格跳过,您不会意外地在“答案是3。14 是下一个答案”中找到“3.14”。

2021-09-19 18:46:04    分类:技术分享    python   parsing   nlp   pyparsing

具有许多命名空间的 PHP 解析 XML 响应(PHP Parse XML response with many namespaces)

问题 有没有办法解析 PHP 中的 XML 响应,考虑所有命名空间节点并将其转换为对象或数组而不知道所有节点名称? 例如,转换这个: <?xml version="1.0" encoding="ISO-8859-1"?> <serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service" xmlns:com="http://www.webex.com/schemas/2002/06/common" xmlns:att="http://www.webex.com/schemas/2002/06/service/attendee"> <serv:header> <serv:response> <serv:result>SUCCESS</serv:result> <serv:gsbStatus>PRIMARY</serv:gsbStatus> </serv:response> </serv:header> <serv:body> <serv:bodyContent xsi:type="att:lstMeetingAttendeeResponse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <att:attendee> <att:person>

2021-09-19 18:23:32    分类:技术分享    php   xml   parsing   simplexml   xml-namespaces

模棱两可的 ANTLR 解析器规则(Ambiguous ANTLR parser rule)

问题 我有一个非常简单的示例文本,我想用 ANTLR 解析它,但由于规则的定义不明确,我得到了错误的结果。 这是语法: grammar SimpleExampleGrammar; prog : event EOF; event : DEFINE EVT_HEADER eventName=eventNameRule; eventNameRule : DIGIT+; DEFINE : '#define'; EVT_HEADER : 'EVT_'; DIGIT : [0-9a-zA-Z_]; WS : ('' | ' ' | '\r' | '\n' | '\t') -> channel(HIDDEN); 第一个文本示例: #define EVT_EX1 第二个文本示例: #define EVT_EX1 #define EVT_EX2 因此,第一个示例被正确解析。 但是,第二个示例不起作用,因为 eventNameRule 匹配下一个“#define ...”并且解析树不正确 感谢任何帮助更改语法以正确解析它的帮助。 谢谢,布西 回答1 除了缺少循环说明符之外,您的 WS 规则也有问题。 第一个 alt 匹配任何内容。 去掉那个。 而且,顺便说一句,给你的 DIGIT 规则一个不同的名字。 它匹配的不仅仅是数字。 回答2 正如阿德里安指出的那样,我的主要错误是在初始规则(prog

2021-09-19 17:47:18    分类:技术分享    parsing   antlr   antlr4