小编Joh*_*Doe的帖子

在大型二进制文件(2 GB 或更大)中使用正则表达式搜索字符串

使用正则表达式在大型二进制文件(2 GB 或更大)中搜索(多个)字符串的最佳方法是什么。

二进制数据只是“原始”数据(如内存转储),并且字符串不受限制。

我可以通过逐行读取文件来在大型文本文件中执行此操作。我想我需要以块的形式读取文件,但是存在边界风险(匹配位于块边界上)

如何搜索二进制数据。

非常感谢一个简短的例子。

编辑:我没有看到相似之处。我根本不清楚

python regex binary python-2.7

5
推荐指数
1
解决办法
1206
查看次数

如果任何列包含关键字之一,则删除行

我想删除任何列包含关键字之一的行

keywords=['Nokia' , 'Asus']

data = [['Nokia', 'AB123','broken'], ['iPhone', 'DF747','battery'], ['Acer', 'KH298','exchanged for a nokia'], ['Blackberry', 'jj091','exchanged for a Asus']] 
df = pd.DataFrame(data, columns = ['Brand', 'ID', 'Description']) 
Run Code Online (Sandbox Code Playgroud)

df 之前:

Brand      | ID    |  Description
----------------------------------------
Nokia      | AB123 | broken
iPhone     | DF747 | battery
Acer       | KH298 | exchanged for a nokia
Blackberry | jj091 | exchanged for a Asus
Run Code Online (Sandbox Code Playgroud)

df 之后:

Brand      | ID    |  Description
----------------------------------------
iPhone     | DF747 | battery
Acer       | KH298 | exchanged …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas python-3.7

5
推荐指数
1
解决办法
59
查看次数

更改文件名后缀(使用sed?)

我想从文件中更改文件名后缀(使用bash脚本),但有时会有一个句点和一些带有两个句点的文件.

现在我用这个:

new_file=`echo ${file} | sed 's/\(.*\.log.*\)'${suf}'/\1.'${num}'/'`
Run Code Online (Sandbox Code Playgroud)

其中'new_file'是新文件名,'file'是原始文件名,'$ {suf}'是文件的后缀,$ {num}是新号码.

因此some.log必须成为some.log.1,some.log.1必须成为some.log.2.使用我的代码some.log成为some.log.1,但some.log.1仍然是some.log.1.

我希望我足够清楚.我很感激任何建议(甚至不使用sed).

更新:

@paxdiablo.我认为测试出了问题.

现在我用这段代码作为测试;

#!/usr/bin/bash

        shft() {
            for suff in {6..1} ; do
                if [[ -f "$1.${suff}" ]] ; then
                    ((nxt = suff + 1))
                    echo Moving "$1.${suff}" to "$1.${nxt}"
                    mv -f "$1.${suff}" "$1.${nxt}"
                fi
            done
            echo Moving "$1" to "$1.1"
            mv -f "$1" "$1.1"
        }

        clear

        folder=~/logs/*.log

        for i …
Run Code Online (Sandbox Code Playgroud)

shell filenames rename sed

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

BinaryReader读取4个字节,但没有得到预期的结果

我使用BinaryReader读取文件,我遇到了无法解决的问题.(C#)

我需要读4个字节.当我用我的十六进制查看器查看这些字节时00 00 00 13.所以我试过Int32 fLength = dbr.ReadInt32();结果是318767104而不是19(我期望和需要的).当我使用时,byte[] fLength = dbr.ReadBytes(4);我可以看到我已经读取了正确的字节[0] [0] [0] [19].

(我对下面的字节有同样的问题)

我如何读取这4个字节并获得19作为结果.

提前致谢 !

Robertico

c# binary byte

3
推荐指数
1
解决办法
761
查看次数

Replace only last occurrence of column value in DataFrame

I've a DataFrame with a Company column.

Company
-------------------------------                                                           
Tundra Corporation Art Limited
Desert Networks Incorporated
Mount Yellowhive Security Corp
Carter, Rath and Mueller Limited (USD/AC)
Barrows corporation /PACIFIC
Corporation, Mounted Security
Run Code Online (Sandbox Code Playgroud)

I've a dictionary with regexes to normalize the company entities.

(^|\s)corporation(\s|$); Corp 
(^|\s)Limited(\s|$); LTD 
(^|\s)Incorporated(\s|$); INC 
...
Run Code Online (Sandbox Code Playgroud)

I need to normalize only the last occurrence. This is my desired output.

Company
-------------------------------                                                           
Tundra Corporation Art LTD
Desert Networks INC
Mount Yellowhive Security Corp
Carter, Rath and Mueller LTD …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

3
推荐指数
1
解决办法
77
查看次数

使用带有正则表达式(Scala?)的字典的 PySpark UDF 优化挑战

我正在尝试优化下面的代码(PySpark UDF)。

它给了我想要的结果(基于我的数据集),但在非常大的数据集(大约 180M)上它太慢了。

结果(准确性)优于可用的 Python 模块(例如 geotext、hdx-python-country)。所以我不是在寻找另一个模块。

数据框:

df = spark.createDataFrame([
  ["3030 Whispering Pines Circle, Prosper Texas, US","John"],   
  ["Kalverstraat Amsterdam","Mary"],   
  ["Kalverstraat Amsterdam, Netherlands","Lex"] 
]).toDF("address","name")
Run Code Online (Sandbox Code Playgroud)

正则表达式.csv:

iso2;keywords
US;\bArizona\b
US;\bTexas\b
US;\bFlorida\b
US;\bChicago\b
US;\bAmsterdam\b
US;\bProsper\b
US;\bUS$
CA;\bAlberta\b
CA;\bNova Scotia\b
CA;\bNova Scotia\b
CA;\bWhitehorse\b
CA;\bCA$
NL;\bAmsterdam\b
NL;\Netherlands\b
NL;\bNL$

......<many, many more>
Run Code Online (Sandbox Code Playgroud)

regex.csv, group byiso2并加入keywords( \bArizona\b|\bTexas\b\bFlorida\b|\bUS$)创建 Pandas DataFrame 。

df = pd.read_csv(regex.csv, sep=';')
df_regex = df.groupby('iso2').agg({'keywords': '|'.join }).reset_index()
Run Code Online (Sandbox Code Playgroud)

功能:

def get_iso2(x): 
 
    iso2={}
    
    for j, row in df_regex.iterrows():
 
        regex …
Run Code Online (Sandbox Code Playgroud)

regex scala user-defined-functions python-3.x pyspark

3
推荐指数
1
解决办法
869
查看次数

错误:Series' 对象没有属性 'contains'"

我搜索我的 DataFrame 的所有列(除了第一列)并添加一个带有匹配列名称的新列“Matching_Columns”,当我在测试我的模式是否包含在一行中之前尝试删除所有点时,我收到一个错误.

这有效:

keyword='123456789'
f = lambda row: row.apply(str).str.contains(keyword ,na=False, flags=re.IGNORECASE)
df1 = df.iloc[:,1:].apply(f, axis=1)

df.insert(loc=1, column='Matching_Columns', value=df1.dot(df.columns[1:] + ', ').str.strip(', '))
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:

keyword='123456789'
f = lambda row: row.apply(str).str.replace(".","").contains(keyword ,na=False, flags=re.IGNORECASE)
df1 = df.iloc[:,1:].apply(f, axis=1)

df.insert(loc=1, column='Matching_Columns', value=df1.dot(df.columns[1:] + ', ').str.strip(', '))
Run Code Online (Sandbox Code Playgroud)

错误:

AttributeError: ("'Series' object has no attribute 'contains'", 'occurred at index 0')
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这有什么问题。看起来str.replace(".","")是导致错误的原因。

任何帮助,将不胜感激

dataframe python-3.x pandas

2
推荐指数
1
解决办法
2万
查看次数

使用 PySpark 从字符串中获取倒数第二个单词

我需要从字符串值中获取倒数第二个单词。

df = spark.createDataFrame([
  ["sample text 1 AFTEDGH XX"],
  ["sample text 2 GDHDH ZZ"],
  ["sample text 3 JEYHEHH YY"],
  ["sample text 4 QPRYRT EB"],
  ["sample text 5 KENBFBF XX"]
]).toDF("line")

+--------+
|word    |
+--------+
|AFTEDGH |
|GDHDH   |
|JEYHEHH |
|QPRYRT  |
|KENBFBF |
+--------+
Run Code Online (Sandbox Code Playgroud)

我试过:

df_new = df.withColumn('word', F.split(F.col('line'), ' ')[-2])

df_new = df.withColumn('word', F.reverse(F.split(F.col('line'), ' '))[-2])
Run Code Online (Sandbox Code Playgroud)

但他们返回 Null

split apache-spark apache-spark-sql pyspark

2
推荐指数
1
解决办法
1319
查看次数

PHP创建动态HTML表

解析JSON文件后,我需要使用PHP创建动态html表。
我的表需要这种列结构;Name | Status | Age | Count | Progress | Bad

如何为从JSON文件解析的每个“记录”创建新行(我可以创建制表符分隔的字符串)。
另一个困难是,某些“记录”仅包含“名称”列的数据,而另一些则包含所有列的数据。

所以我的问题是如何在表中动态添加一行并填充右列?
JSON文件的关键是列标题

JSON格式的示例:

{ 
"John":     {"status":"Wait" }, 
"Jennifer": {"status":"Active" }, 
"James":    {"status":"Active","age":56,"count":10,"progress":0.0029857,"bad":0} 
}
Run Code Online (Sandbox Code Playgroud)

html php json row html-table

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

拆分单元格值并更新现有列

只是关于我的问题的简短描述.
我有两列[ name]和[ address]以某种方式,(部分)地址与名称在同一单元格中(从csv文件导入).

我想在名称列中拆分字符串(拆分为'2 /')并将地址部分添加到列[ address]并将名称保留在[ name]列中.
只需在[ address]为空时移动它,如果[ address]不为空则加入.
请在下面找到一个示例.

来自csv的原始数据:

name;address
Markus M Berg;Kirchenallee 52
Johanna P Wirth 2/Ufnau Strasse 48;
Felix B Beike 2/Mohrenstrasse 47;Dormettingen
Run Code Online (Sandbox Code Playgroud)

现在的情况

name                               | address
------------------------------------------------------------
Markus M Berg                      | Kirchenallee 52
Johanna P Wirth 2/Ufnau Strasse 48 |
Felix B Beike 2/Mohrenstrasse 47   | Dormettingen
Run Code Online (Sandbox Code Playgroud)

期望的情况:

name                               | address
------------------------------------------------------------
Markus M Berg                      | Kirchenallee 52
Johanna P Wirth                    | Ufnau Strasse 48
Felix B …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

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

php数组(数组)到javascript

我有一个包含GPS坐标的MySQL数据库.这是我检索坐标的部分PHP代码;

$sql = "SELECT lat, lon FROM gps_data";
$stmt=$db->query($sql); 
$result=$stmt->fetchAll();
Run Code Online (Sandbox Code Playgroud)

现在我需要将返回的PHP数组"转换"为javascript中的数组数组.我已经试过了;

var js_var = <?php echo json_encode($result); ?>;
Run Code Online (Sandbox Code Playgroud)

但这不是理想的输出

电流输出:

var js_var = [{"lat":"61.883350","0":"61.883350","lon":"8.551115","1":"8.551115"},{"lat":"61.883380","0":"61.883350","lon":"8.551715","1":"8.551715"}];
Run Code Online (Sandbox Code Playgroud)

期望的输出:

var js_var =
[[61.883350,8.551115],[61.883380,8.551715]];
Run Code Online (Sandbox Code Playgroud)

怎么实现这个?

javascript php mysql arrays

0
推荐指数
1
解决办法
43
查看次数

Dictionary to List 其中键重复值的次数

我需要将字典转换为列表,其中键重复值的次数。

dict = {'foo':3, 'bar':1}
Run Code Online (Sandbox Code Playgroud)

期待结果:

['foo', 'foo', 'foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

python dictionary list

0
推荐指数
1
解决办法
105
查看次数