local result = {} for match in (str..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match) end
时间: 2024-04-11 11:31:50 浏览: 93
这段代码是一个使用Lua语言处理字符串的例子。让我解释一下它的具体功能:
1. 首先,创建了一个空表 `result`,用于存储字符串匹配的结果。
2. 通过字符串的拼接 `str..delimiter`,将 `str` 和 `delimiter` 连接在一起。这是为了在字符串末尾添加一个额外的 `delimiter`,以确保最后一个匹配项也能被捕获到。
3. 使用 `gmatch` 函数对拼接后的字符串进行匹配操作。`gmatch` 函数是用于迭代字符串中所有匹配模式的函数。
4. 匹配模式 `"(.-)"..delimiter` 表示以 `delimiter` 结尾的任意字符序列(非贪婪模式),并将其捕获到变量 `match` 中。
5. 在每次迭代中,将匹配到的字符序列 `match` 插入到表 `result` 中,使用 `table.insert(result, match)`。
通过以上步骤,代码可以将字符串 `str` 按照指定的分隔符 `delimiter` 进行拆分,并将拆分后的结果存储在表 `result` 中。最终,表 `result` 将包含拆分后的字符串片段。
相关问题
create table order_core_order_master ( message string, proctime_kafka_1 as proctime() ) with ( "connector.type" = "kafka", "connector.version" = "0.10", "connector.properties.bootstrap.servers" = "10.188.18.34:9092,10.188.17.128:9092,10.188.18.231:9092,10.188.19.163:9092,10.188.16.210:9092", "connector.properties.group.id" = "flink_159374_order_core_order_master", "connector.properties.flink.partition-discovery.interval-millis" = "30000", "connector.topic" = "order_core_all", "format.type" = "csv", "format.field-delimiter" = "\u0001", "format.line-delimiter" = "\r", "format.quote-character" = "''", -- "format.type" = "json", --"connector.startup-mode" = "latest-offset" "connector.startup-mode" = "timestamp", "connector.startup-timestamp-millis" = "1685653200000" --'2023-06-02 05:00:00' );
这是一个创建名为order_core_order_master的表的SQL语句。该表包含一个名为message的字符串类型的列,以及一个名为proctime_kafka_1的虚拟列,该列使用系统时间作为其值。此外,该表还定义了使用Apache Kafka作为数据源的连接器,指定了Kafka服务器地址和组ID等属性,以及使用CSV格式解析数据。最后,该表还指定了连接器的启动模式为“timestamp”,并指定了一个时间戳作为其启动时间。
忽略该脚本警告 import pandas as pd import glob def com(): file_paths = glob.glob('E:/py卓望/数据分析/top150_20230321/*.txt') data = pd.DataFrame() for i in file_paths: df = pd.read_csv(i, sep=',', header=None, skiprows=[0]) data = pd.concat([data, df]) data.drop(df.columns[0], axis=1, inplace=True) df.sort_values(by=1, ascending=False, inplace=True) data.iloc[:, 0] = data.iloc[:, 0].str.lower() data.to_csv('E:/py卓望/数据分析/all/all_file.txt', sep=',', index=False,header=False) all = pd.read_csv('E:/py卓望/数据分析/all/all_file.txt', header=None, delimiter=',') all[0] = all[0].str.split('.') all[0] = all[0].apply( lambda x: '.'.join(x[-3:]) if '.'.join(x[-2:]) in ['gov.cn', 'com.cn', 'org.cn', 'net.cn'] else '.'.join(x[-2:])) new_col = all[0] result = pd.concat([new_col,all.iloc[:,1:]],axis=1) result.to_csv('E:/py卓望/数据分析/all/二级域名.txt', sep=',',index=False,header=False) summation = pd.read_csv('E:/py卓望/数据分析/all/二级域名.txt', header=None, delimiter=',') grouped = summation.groupby(0)[1].sum().reset_index() grouped = grouped.sort_values(by=1, ascending=False).reset_index(drop=True) grouped[1] = grouped[1].fillna(summation[1]) grouped.to_csv('E:/py卓望/数据分析/all/处理后求和域名.txt', sep=',', index=False, header=False) top_10000 = pd.read_csv('E:/py卓望/数据分析/all/处理后求和域名.txt', header=None, delimiter=',') alls = top_10000.nlargest(10000, 1) alls.drop(columns=[1], inplace=True) alls.to_csv('E:/py卓望/数据分析/all/data.txt', sep=',',index=False, header=False) final = top_10000.iloc[10000:] final.drop(columns=[1], inplace=True) final.to_csv('E:/py卓望/数据分析/all/final_data.txt', sep=',',index=False, header=False) print(final.to_csv) warnings.filterwarnings("ignore") def main(): com() if __name__ == "__main__": print("开始清洗域名文件") main() print("数据清洗完毕")
要忽略该脚本中的警告,可以在脚本开头添加以下两行代码:
```python
import warnings
warnings.filterwarnings("ignore")
```
这会忽略脚本中的所有警告。将这两行代码添加到脚本的开头即可:
```python
import pandas as pd
import glob
import warnings
def com():
warnings.filterwarnings("ignore")
file_paths = glob.glob('E:/py卓望/数据分析/top150_20230321/*.txt')
data = pd.DataFrame()
for i in file_paths:
df = pd.read_csv(i, sep=',', header=None, skiprows=[0])
data = pd.concat([data, df])
data.drop(df.columns[0], axis=1, inplace=True)
df.sort_values(by=1, ascending=False, inplace=True)
data.iloc[:, 0] = data.iloc[:, 0].str.lower()
data.to_csv('E:/py卓望/数据分析/all/all_file.txt', sep=',', index=False,header=False)
all = pd.read_csv('E:/py卓望/数据分析/all/all_file.txt', header=None, delimiter=',')
all[0] = all[0].str.split('.')
all[0] = all[0].apply(
lambda x: '.'.join(x[-3:]) if '.'.join(x[-2:]) in ['gov.cn', 'com.cn', 'org.cn', 'net.cn'] else '.'.join(x[-2:]))
new_col = all[0]
result = pd.concat([new_col,all.iloc[:,1:]],axis=1)
result.to_csv('E:/py卓望/数据分析/all/二级域名.txt', sep=',',index=False,header=False)
summation = pd.read_csv('E:/py卓望/数据分析/all/二级域名.txt', header=None, delimiter=',')
grouped = summation.groupby(0)[1].sum().reset_index()
grouped = grouped.sort_values(by=1, ascending=False).reset_index(drop=True)
grouped[1] = grouped[1].fillna(summation[1])
grouped.to_csv('E:/py卓望/数据分析/all/处理后求和域名.txt', sep=',', index=False, header=False)
top_10000 = pd.read_csv('E:/py卓望/数据分析/all/处理后求和域名.txt', header=None, delimiter=',')
alls = top_10000.nlargest(10000, 1)
alls.drop(columns=[1], inplace=True)
alls.to_csv('E:/py卓望/数据分析/all/data.txt', sep=',',index=False, header=False)
final = top_10000.iloc[10000:]
final.drop(columns=[1], inplace=True)
final.to_csv('E:/py卓望/数据分析/all/final_data.txt', sep=',',index=False, header=False)
print(final.to_csv)
def main():
print("开始清洗域名文件")
com()
print("数据清洗完毕")
if __name__ == "__main__":
main()
```
这样就可以在运行脚本时忽略所有警告了。
阅读全文