小编Tim*_*ker的帖子

使用Python解析文本文件

我是Python的新手,我希望用它来解析文本文件.该文件具有以下格式的250-300行:

---- Mark Grey (mark.grey@gmail.com) changed status from Busy to Available @ 14/07/2010 16:32:36 ----
----  Silvia Pablo (spablo@gmail.com) became Available @ 14/07/2010 16:32:39 ----
Run Code Online (Sandbox Code Playgroud)

我需要将以下信息存储到该文件中所有条目的另一个文件(excel或文本)中

UserName/ID  Previous Status New Status Date Time
Run Code Online (Sandbox Code Playgroud)

所以我的结果文件看起来应该是这样的

Mark Grey/mark.grey@gmail.com  Busy Available 14/07/2010 16:32:36
Silvia Pablo/spablo@gmail.com  NaN  Available 14/07/2010 16:32:39
Run Code Online (Sandbox Code Playgroud)

提前致谢,

任何帮助将非常感激

python parsing

4
推荐指数
3
解决办法
3万
查看次数

正则表达式以任何顺序匹配多个模式

我正在验证ASP.NET MVC3应用程序中复杂性的密码.我目前的要求是它必须包含至少一个大写字母,一个小写字母,一个数字和不超过三个重复字符.我想对这些数字进行概括,并为非字母数字字符添加条件.

目前,我只验证服务器端,因此我可以使用一个正则表达式为每个条件多次调用Regex.IsMatch.我希望能够验证客户端.因为不显眼的jQuery验证只允许一个正则表达式,我需要将所有五个条件组合成一个模式.

我对正则表达式的了解不多,但最近我一直在做一些阅读.我可能会遗漏一些简单的东西,但我无法找到一种方式将多个模式组合在一起 他们会.

.net javascript regex

4
推荐指数
1
解决办法
5405
查看次数

英国日期正则表达

我正在尝试创建一个验证英国日期格式的正则表达式.我有以下内容:

(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
Run Code Online (Sandbox Code Playgroud)

这非常适合验证:09/12/2011.但如果日期是:2011年9月 12日,它将无法正确验证.是否有正则表达式允许我使用单个数字和两个数字作为日期部分?例如" 09 "和" 9 ".

regex

4
推荐指数
1
解决办法
6871
查看次数

Regex.match中的C#性能问题

大家好我在C#中使用Regex.match来逐行逐步调整文本文件.我发现当线条与模式不匹配时会花费更多时间(约2-4秒).但是比赛时花费的时间少于1秒.谁能告诉我如何改善表现?

这是我正在使用的正则表达式:

^.*?\t.*?\t(?<npk>\d+)\t(?<bol>\w+)\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t\s*(?<netValue>[\d\.,]+)\t.*?\t.*?\t(?<item>\d{6})\t(?<salesDoc>\d+)\t(?<acGiDate>[\d\.]{10})\t.*?\t.*?\t.*?\t.*?\t.*?\t(?<delivery>\d+)\t\s*(?<billQuantity>\d+)\t.*?\t(?<material>[\w\-]+)\tIV$
Run Code Online (Sandbox Code Playgroud)

c# regex

4
推荐指数
1
解决办法
3999
查看次数

影响?在正则表达式字符串中

请考虑以下Python代码:

>>> re.search(r'.*(99)', 'aa99bb').groups()
('99',)
>>> re.search(r'.*(99)?', 'aa99bb').groups()
(None,)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我在第二个例子中没有抓到99.

python regex

4
推荐指数
1
解决办法
99
查看次数

可以 grep 文件查找模式,然后根据模式的部分对找到的行进行排序吗?

我将许多单独序列化的 PHP 数组存储到一个文件中。文件的每一行都包含一个序列化数组。例如:

a:2:{s:4:"name";s:8:"John Doe";s:3:"age";s:2:"20";}
a:2:{s:4:"name";s:8:"Jane Doe";s:3:"age";s:2:"15";}
a:2:{s:4:"name";s:12:"Steven Tyler";s:3:"age";s:2:"35";}
a:2:{s:4:"name";s:12:"Jim Morrison";s:3:"age";s:2:"25";}
a:2:{s:4:"name";s:13:"Apple Paltrow";s:3:"age";s:2:"75";}
a:2:{s:4:"name";s:12:"Drew Nickels";s:3:"age";s:2:"34";}
a:2:{s:4:"name";s:11:"Jason Proop";s:3:"age";s:2:"36";}
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

是否可以 grep 该文件以获取以下模式:"name"*"*"

然后,我想根据第二个通配符的内容对找到的行进行排序。

regex grep

4
推荐指数
1
解决办法
4607
查看次数

Python __repr__和None

我是Python的新手,目前我需要__repr__一个SqlAlchemy类.我有一个可以接受Null值的整数列,SqlAlchemy将其转换为None.例如:

class Stats(Base):
   __tablename__ = "stats"
   description = Column(String(2000))
   mystat = Column(Integer, nullable=True)
Run Code Online (Sandbox Code Playgroud)

__repr__当SqlAlchemy返回时,在函数中表示"mystat"字段的正确方法是什么None

python sqlalchemy repr

4
推荐指数
2
解决办法
8256
查看次数

分隔换行符和逗号和分号

我想从用户输入一个textarea值的人名,并将它们分成数组中的项目.

从理论上可能的输入:

people = "Abby Andrews, Ben \r\nCharlie Connors    Daphne D., Ernie E. Engels; Faye\r\n\r\nGary Gomez"

array = people.split('??')
Run Code Online (Sandbox Code Playgroud)

如何构建正则表达式以成功分裂像上面这样的疯狂链?

应分开:

  • \r,\n,\r\n
  • 逗号(,)或分号(;)
  • 多个空间

不应拆分:

  • 期间(这可能是某人的初始)
  • 单个空格(可以分隔名字和姓氏)

我尝试过people.split(/\r\n,;/),people.split(/,;\r\n/)以及它们的组合,但没有产生结果.

regex ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
4080
查看次数

使用StringIO和csv模块的通用换行模式的意外行为

请考虑以下内容(Windows下的Python 3.2):

>>> import io
>>> import csv
>>> output = io.StringIO()         # default parameter newline=None
>>> csvdata = [1, 'a', 'Whoa!\nNewlines!']
>>> writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
>>> writer.writerow(csvdata)
25
>>> output.getvalue()
'1,"a","Whoa!\nNewlines!"\r\n'
Run Code Online (Sandbox Code Playgroud)

为什么有一个\n- 不应该已经转换为\r\n自启用通用换行模式?

启用此功能,在输入,线路的结局\n,\r\r\n 将被转换为\n被返回给调用者之前.相反,在输出时,\n转换为系统默认行分隔符,os.linesep.

python csv newline python-3.x

4
推荐指数
1
解决办法
4334
查看次数

将多个掩码应用于数组

我正在解释我实际上希望做的事情,以防有更高级别的建议完全避免这个问题.

我有我保存在三个数组科学数据:wave,flux,error.它们代表波长,通量和误差值.阵列长约4000个元素(并且数组的索引号对应于检测器的像素数).

我做了各种各样的测试,但是对于这个例子,我们只是说我做了2次测试,我需要有效地屏蔽掉相关的数组.

masks = []
masks.append(wave > 5500.35)
masks.append(flux / wave > 8.5)
Run Code Online (Sandbox Code Playgroud)

Subquestion:我可以很容易地做2面罩案例,如:

fullmask = [x[0] and x[1] for x in zip(masks[0], masks[1])]
Run Code Online (Sandbox Code Playgroud)

但是对于任意数量的面具来说,这样做的方法是什么?

真正的问题:有没有对所有口罩适用于每一个阵列(的方式wave,flux,error),并保持原有的索引号?通过"保留原始索引号"我的意思是我原则上可以取掩蔽波阵列的平均像素数(原始索引号)?也就是说:如果wave[98:99]唯一没有掩盖的部分,平均像素将是98.5.

元问题:这是做这些事情的最好方法吗?


编辑

所以这里有一些样本数据可供使用.

wave = array([5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010,
   5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021,
   5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy filter

4
推荐指数
2
解决办法
5618
查看次数