V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wxf666  ›  全部回复第 5 页 / 共 26 页
回复总数  514
1  2  3  4  5  6  7  8  9  10 ... 26  
@chengxiao #39 Windows 上还有哪些 flutter 应用吗?想去体验一下
@locoz 我的朴素思路就是想跳过时不时插播的 澳 门 威 尼 斯 人 广告。

你能演示一下,如何让这个思路演变成,足以让它写出完美达到目的的代码?
@locoz #47 能让 AI 帮写一个,能识别视频站的 澳 门 威 尼 斯 人 广告,并自动跳过的代码吗?
292 天前
回复了 faketemp 创建的主题 分享创造 Json 数据通用提取工具[离线]
@faketemp #15 再试试 pandas 、dsq 、fx 这些,以及 dsq 提到的其他比较快的工具 octosql 、duckdb ( q 太大了,算了):

- **pandas**:总计 5.24 s ,实际 pandas 只用 3.85 s 。看来确实有点重量级,不太适合日常小型数据处理。
- **dsq**:5.30 s ,但是不支持 CSV 输出,是以 json 原样输出的。*(看时间统计,似乎是双线程?)*
- **fx**:很久,且占了 4GB+ 内存,直接中断了。。*(好像也不支持 CSV 输出)*
- **octosql**:不支持读取 JSON Array ,只能 JSON Object ?
- **duckdb**:4.61 s ,和 SQLite 差不多。

Shell 操作记录:

```shell
~/Downloads $ time py -c 'import time; import pandas as pd; begin = time.time(); pd.read_json(r"Y:\villages.json")[["code", "name"]].set_index("code").to_csv(r"Y:\out.csv"); print(f"{time.time() - begin:.2f}s")' && showCsv
3.85s
real 0m 5.24s
user 0m 0.00s
sys 0m 0.01s


~/Downloads $ time ./dsq.exe Y:/villages.json 'SELECT code, name FROM {}' > Y:/out.csv && showCsv
real 0m 5.30s
user 0m 8.81s
sys 0m 1.50s
619503 33905785 Y:/out.csv
{"code":"659011502509","name":"十一连生活区"},
{"code":"659011502510","name":"十二连生活区"},
{"code":"659011502512","name":"五连生活区"}]


~/Downloads $ time ./fx.exe Y:/villages.json 'x.map(y => [y.code, y.name])' > Y:/out.csv && showCsv
^C


~/Downloads $ ./octosql.exe 'SELECT * FROM provinces.json'
Error: typecheck error: couldn't create datasource: expected JSON object, got '[{"code":"11","name":"北京市"},{"code":"12","name":"天津市"},{"code":"13","name":"河北省"},{"code":"14","name":"山西省"},{"code":"15","name":"内蒙古自治区"},{"code":"21","name":"辽宁省"},{"code":"22","name":"吉 林省"},{"code":"23","name":"黑龙江省"},{"code":"31","name":"上海市"},{"code":"32","name":"江苏省"},{"code":"33","name":"浙江省"},{"code":"34","name":"安徽省"},{"code":"35","name":"福建省"},{"code":"36","name":"江西省"},{"code":"37","name":"山东省"},{"code":"41","name":"河南省"},{"code":"42","name":"湖北省"},{"code":"43","name":"湖南省"},{"code":"44","name":"广东省"},{"code":"45","name":"广西壮族自治区"},{"code":"46","name":"海南省"},{"code":"50","name":"重庆市"},{"code":"51","name":"四川省"},{"code":"52","name":"贵州省"},{"code":"53","name":"云南省"},{"code":"54","name":"西藏自治区"},{"code":"61","name":"陕西省"},{"code":"62","name":"甘肃省"},{"code":"63","name":"青海省"},{"code":"64","name":"宁夏回族自治区"},{"code":"65","name":"新疆维吾尔自治区"}]'


~/Downloads $ time ./duckdb.exe -csv :memory: "SELECT code, name FROM 'Y:/villages.json'" > Y:/out.csv && showCsv
real 0m 4.61s
user 0m 3.40s
sys 0m 1.15s
619504 22135235 Y:/out.csv
659011502509,"十一连生活区"
659011502510,"十二连生活区"
659011502512,"五连生活区"
```
@oldshensheep 如果想持续爬取所有新回复,该用什么思路呢?好像没有最新回复列表?
293 天前
回复了 faketemp 创建的主题 分享创造 Json 数据通用提取工具[离线]
@faketemp #15 不知道你输入了什么命令,不太好猜出错原因。。


我虚拟机装了个 Win XP 试了试,这些工具的最新版都还能正常运行:

- jq ( v1.6 ,2.58 MB ,json 处理)
- SQLite ( v3.42 ,1.09 MB ,小型数据库)
- BusyBox ( v1.37 ,606 KB ,Linux Shell 风格脚本)
- QuickJS ( v2021-03-27 ,863 KB ,支持 ES2020 的 js 引擎)

有以上工具,足够编写很多便捷的小脚本了,也能拖动文件自动处理之类的。

*( dsq 和 fx 确实在 Win XP 上运行不了,估计至少得 Win 7 。。)*


试了试用这些工具导出 [行政区划第 5 级 json 数据( 80 MB )]( https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/villages.json) 为 CSV ,确实还是你的 Json2Csv 工具快些。但总体而言,速度差异不是很大(对比如下,末尾附截图):

| | Json2Csv | jq | SQLite | QuickJS |
| :---: | :--------: | :----: | :----: | :-----: |
| WinXP | (不支持) | 7.26 s | 5.67 s | 8.93 s |
| Win10 | 3.72 s | 5.60 s | 4.26 s | 8.30 s |


对了,如果要把这 5 级(省市县乡村)的 json 数据,根据各自的外键字段,串成 json 树(如下),有啥简单快捷的办法呢?

```json
[
 {
  "code": "11",
  "name": "北京市",
  "children": [
   {
    "code": "1101",
    "name": "市辖区",
    "children": [
     "..."
    ]
   }
  ]
 },
 {
  "code": "12",
  "name": "天津市",
  "children": [
   "..."
  ]
 },
 "..."
]
```


虚拟机里 WinXP 测试各工具导出 CSV 截图:

![]( https://i.imgur.com/jccBQmu.png)


Win10 测试各工具导出 CSV 截图:

![]( https://i.imgur.com/rbTKWNI.png)
这个 json 转换不对呀:

```json
[{"a": 1, "b": [2, 3, 4]}, {"a": 5, "c": 6}]
```

有两个问题:

1. 第一行的 b 数组消失了,变成了 2
2. 第二行的 c 没有解析
295 天前
回复了 simman 创建的主题 程序员 如何解决 Dart 解析大 Json 文件慢
你要存啥呢?用个普通数据库也不错呀。。

比如,SQLite 解析 JSON 也挺快:

```
sqlite> .timer on
sqlite> SELECT json_array_length(readFile('large-file.json'));
11351
Run Time: real 0.089 user 0.046875 sys 0.046875
```
295 天前
回复了 faketemp 创建的主题 分享创造 Json 数据通用提取工具[离线]
@faketemp #8 既然都是 Win7 了,为啥 jq/dsq/fx 跑不起来呢?

看了下,jq 还是纯 C 写的,xp 跑也没啥压力吧。。


至于 jq 兼容性较差,json 识别出错,是 json 文件不标准吗?或者说是 json5 ?

按理说,专门处理 json 的工具,识别不了 json ,是会贻笑大方的,应该不至于


另外,有试过打包 python 环境吗?有大佬甚至能打包完整 PyQT5 环境,并分发。(不是 PyInstaller)

链接: https://www.zhihu.com/question/48776632/answer/2336654649

看起来,打包 pandas 应该也不会太难?
你给点工具的应用场景出来呗?

比如,音视频处理?文本处理?结构数据处理?……
@lisongeee #5 python 有个类似的,pdm ,也支持整台电脑每个包只保留一份,然后通过软链接引用啥的。

但不清楚能不能多版本共存。。
296 天前
回复了 ohayoo 创建的主题 Python 菜鸟又来求助 pandas 了
@Drahcir #13 pandas 用的不多,可以评估下 11 楼的效率吗?
297 天前
回复了 yaott2020 创建的主题 Linux 请诸位 Linux 用户泼醒我
@yaott2020 #4 装个双系统呗,现在固态这么便宜
@OutOfMemoryError #11 应该有不少是索引吧
299 天前
回复了 Authorization 创建的主题 程序员 有没有那种可以和老外沟通的聊天室
抖音上有些英语聊天室,刚开始可以去这试一试。很多都是中国人,更容易听懂些
@Huelse #60 对呀,不是说,机器便宜,程序猿贵吗?

花这么多工时重构,足够加多少机器了都。。
@alexapollo #6 加油!期待明年能见到你司的 Windows 、Office 、Oracle 、Matlab 、PhotoShop 、……
做个 12306 出来看看?
300 天前
回复了 ohayoo 创建的主题 Python 菜鸟又来求助 pandas 了
试着写了一个好懂一些的:

*( V 站排版会吃掉行首空格,所以替换成了全角空格。若要使用,注意替换)*

```python
import re
import pandas as pd

df1 = pd.DataFrame({
  'id': [1, 2],
  'isp': ['电信', '电信'],
  'regions': ['广东', '上海'],
  'answers': [
    'xxx.xxx.com.\nxxx.xxx.xxx.com.\n1.1.1.1 中国深圳电信\n2.2.2.2 中国深圳电信\n',
    'xxx.xxx.com.\nxxx.xxx.xxx.com.\n3.3.3.3 中国上海电信\n4.4.4.4 中国上海电信\n',
  ],
})

df2 = pd.DataFrame({
  'Age': [13, 0, 20, 25],
  'ip': [
    '1.1.1.1',
    '2.2.2.2',
    '3.3.3.3',
    '4.4.4.4',
  ],
  'status_code': [200, 403, 200, 200],
})

df_ip = (
   df1
  .set_index('id')['answers'].str
  .extractall(r'^(?P<ip>[^\s]+)', flags=re.M)
  .reset_index(level='id')
  .set_index('ip')
)

df_result = (
   df2
  .merge(df_ip, how='left', on='ip')
  .groupby('id')
  .agg({
    'ip': '\n'.join,
    'Age': lambda s: '\n'.join(s.astype('string')),
    'status_code': lambda s: '\n'.join(s.astype('string')),
  })
  .merge(df1, how='left', on='id')[[
    'answers',
    'ip',
    'Age',
    'status_code',
  ]]
)
```
@Moeblack #9 好像你没提到必须用正则实现?
1  2  3  4  5  6  7  8  9  10 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3715 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 46ms · UTC 05:03 · PVG 13:03 · LAX 22:03 · JFK 01:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.