由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Python没有for loop
相关主题
请帮忙看一下这个c程序(更新)FP的好处是不是就是Concurrency?
python 小问题python有什么类似Rstudio或者matlab的IDE吗?
问个SHELL SCIPT的问题玩具语言其实很容易实现的
python能检查出space是一个还是两个吗?实践clojure的话有什么库或者框架适合玩
转:王垠--一种新的操作系统设计Clojure上手123
今天跟公司confirm了,没有人用Scala如果不用很高级的feature,C++/Scala是否值得一战?
脚本比较大的问题就是DEBUGgo很牛啊。这个10ms 非常快了。
Scala is simple, but not trivial. It’s sophisticated, but not complex.macro is evil
相关话题的讨论汇总
话题: 00话题: srt话题: nx话题: tx话题: string
进入Programming版参与讨论
1 (共1页)
c********l
发帖数: 8138
1
实在不习惯啊,必须要用range来walk around
E*****m
发帖数: 25615
2
什麼情況下這樣比較不好呢?
p*****2
发帖数: 21240
3

我上次不是给过例子吗?

【在 E*****m 的大作中提到】
: 什麼情況下這樣比較不好呢?
E*****m
发帖数: 25615
4

我看漏了,或者忘了。 有連接嗎?

【在 p*****2 的大作中提到】
:
: 我上次不是给过例子吗?

N******K
发帖数: 10202
5
matlab语言就是这样 非常好 我喜欢

【在 c********l 的大作中提到】
: 实在不习惯啊,必须要用range来walk around
p**o
发帖数: 3409
6
你给个具体的需求,我帮你改一改,看会不会比你的walkaround好一点

【在 c********l 的大作中提到】
: 实在不习惯啊,必须要用range来walk around
c********l
发帖数: 8138
7
好的,多谢!!!
小弟这里有一些网上下载下来的srt字幕文件,
这些字幕文件在里面不知道为什么加入了多余的回车换行,导致看起来十分吃力
我想把多余的换行去掉,保证每组字幕显示只出现在单行
.srt文件的定义:
每组字幕在源文件中占据N行:
第一行是index
第二行是两个时间,中间用“-->”连接
第三行到第N-1行是字幕
第N行是空行
在java下,源文件可以被换行split成一个数组
然后用for (int i=0; i 因为在读前面的时候,后面哪一行“即第N行”才是空行中,N是未知
所以只能先读
读到空行之后,游标i可以回滚
用python,小弟水平不佳,只能下面这样了。
你看看有什么改进的空间没?
===================================================
'''
SrtMerger.py
@author: coupondeal
'''
import re
import os
base_dir = r"C:\Users\coupondeal\Desktop\srts"
dfList = [os.path.join(base_dir, short_name) for short_name in os.listdir(
base_dir)]
for srt_file in dfList:
if (os.path.isfile(srt_file) and srt_file.endswith(".srt")):
with open(srt_file, 'r', encoding='utf-8') as input_srt:
read_data = input_srt.readlines()

if not (os.path.exists(srt_file + ".bak")):
os.rename(srt_file, srt_file + ".bak")

output_srt = open(srt_file,'w', encoding='utf-8')
section_start = 0
for index in range(0, len(read_data)):
line = read_data[index]
if ((line.strip() == "") or (index == len(read_data)-1)):
for j in range(section_start, index+1):
if ((j>=section_start+2) and (j<=index-2)):
output_srt.write (read_data[j].strip() + ' ')
else:
output_srt.write (read_data[j])
section_start = index + 1

output_srt.close()
===================================================
输入:
1
00:00:03,589 --> 00:00:04,773
(
wolf
howls
)
2
00:00:04,775 --> 00:00:06,441
(ee
rie mo
aning)
3
00:00:06,443 --> 00:00:07,776
(evil
laughter)
4
00:00:07,778 --> 00:00:10,479
MAN:
What's up, man
?
5
00:00:11,848 --> 00:00:14,817
Shut your mouth
and act like you got some
sense,
girl!
6
00:00:16,452 --> 00:00:18,237
Are
you sure you have the
right address?
===================================================
输出:
1
00:00:03,589 --> 00:00:04,773
(wolf howls)
2
00:00:04,775 --> 00:00:06,441
(eerie moaning)
3
00:00:06,443 --> 00:00:07,776
(evil laughter)
4
00:00:07,778 --> 00:00:10,479
MAN: What's up, man?
5
00:00:11,848 --> 00:00:14,817
Shut your mouth and act like you got some sense, girl!
6
00:00:16,452 --> 00:00:18,237
Are you sure you have the right address?
===================================================

【在 p**o 的大作中提到】
: 你给个具体的需求,我帮你改一改,看会不会比你的walkaround好一点
p*****2
发帖数: 21240
8

http://www.mitbbs.com/article_t/Programming/31243367.html

【在 E*****m 的大作中提到】
:
: 我看漏了,或者忘了。 有連接嗎?

s*****V
发帖数: 21731
9
比如要做矩阵运算的时候就不好了,还得搞两个计数器。

【在 E*****m 的大作中提到】
: 什麼情況下這樣比較不好呢?
p**o
发帖数: 3409
10
貌似几行代码就可以,没看明白为什么要写这么大一坨
把srt文件当作附件贴上来看看

【在 c********l 的大作中提到】
: 好的,多谢!!!
: 小弟这里有一些网上下载下来的srt字幕文件,
: 这些字幕文件在里面不知道为什么加入了多余的回车换行,导致看起来十分吃力
: 我想把多余的换行去掉,保证每组字幕显示只出现在单行
: .srt文件的定义:
: 每组字幕在源文件中占据N行:
: 第一行是index
: 第二行是两个时间,中间用“-->”连接
: 第三行到第N-1行是字幕
: 第N行是空行

相关主题
今天跟公司confirm了,没有人用ScalaFP的好处是不是就是Concurrency?
脚本比较大的问题就是DEBUGpython有什么类似Rstudio或者matlab的IDE吗?
Scala is simple, but not trivial. It’s sophisticated, but not complex.玩具语言其实很容易实现的
进入Programming版参与讨论
p**o
发帖数: 3409
11
简单地说,输入
1\n
X --> Y\n
a\n
b\n
c\n
\n
2\n
X --> Y\n
a\n
b\n
c\n
\n
第一步,把时间行和空行首位添加制表符,全部存成一个字符串
1\n
\tX --> Y\n\t
a\n
b\n
c\n
\t\n\t
2\n
\tX --> Y\n\t
a\n
b\n
c\n
\t\n\t
第二步,把整个字符串中的换行符全替换为空,变成
1
\tX --> Y\t
a
b
c
\t\t
2
\tX --> Y\t
a
b
c
\t\t
第三步,把制表符全替换成换行符
1
\nX --> Y\n
a
b
c
\n\n
2
\nX --> Y\n
a
b
c
\n\n
也就是
1\n
X --> Y\n
abc\n
\n
2\n
X --> Y\n
abc\n
\n
p**o
发帖数: 3409
12
In [1]: s = '1\nX --> Y\na\nb\nc\n\n2\nX --> Y\naa\nbb\ncc\n'
In [2]: import re
In [3]: help(re.sub)
Help on function sub in module re:
sub(pattern, repl, string, count=0, flags=0)
Return the string obtained by replacing the leftmost
non-overlapping occurrences of the pattern in string by the
replacement repl. repl can be either a string or a callable;
if a string, backslash escapes in it are processed. If it is
a callable, it's passed the match object and must return
a replacement string to be used.
In [4]: re.sub(r'(\n.+-->.+\n)', r'\t\1\t', s)
Out[4]: '1\t\nX --> Y\n\ta\nb\nc\n\n2\t\nX --> Y\n\taa\nbb\ncc\n'
In [5]: s1 = re.sub(r'(\n.+-->.+\n)', r'\t\1\t', s)
In [6]: s1.replace('\n\n', '\n\t\n\t').replace('\n', '')
Out[6]: '1\tX --> Y\tabc\t\t2\tX --> Y\taabbcc'
In [7]: s2 = s1.replace('\n\n', '\n\t\n\t').replace('\n', '')
In [8]: s3 = s2.replace('\t', '\n')
In [9]: print s3
1
X --> Y
abc
2
X --> Y
aabbcc
c********l
发帖数: 8138
13
本版MS只能贴图片附件。不能帖别的后缀的附件

【在 p**o 的大作中提到】
: 貌似几行代码就可以,没看明白为什么要写这么大一坨
: 把srt文件当作附件贴上来看看

c********l
发帖数: 8138
14
Thanks
我大致明白你的思路
但是这个算法有两个缺点
1.你这是假定原有srt文件中没有制表符\t,如果原文中有\t怎么办?
你又找找另外一种特殊字符....
2.srt文件扫描两次,而不是一次。文件小的时候无所谓,但文件大的时候影响执行效
率.....
另外有很多例子,就比如for (int i=1; i
【在 p**o 的大作中提到】
: 简单地说,输入
: 1\n
: X --> Y\n
: a\n
: b\n
: c\n
: \n
: 2\n
: X --> Y\n
: a\n

E*****m
发帖数: 25615
15
用 numpy, 一個計數器都不需要。

【在 s*****V 的大作中提到】
: 比如要做矩阵运算的时候就不好了,还得搞两个计数器。
p**o
发帖数: 3409
16
你这个本身就是很特定的一个需求,代码也没有什么复用价值,属于写完就可以扔的那
种,
当然是尽量用最短的时间用最少的代码写完,get things done即可。
这才是脚本语言的糙快猛哲学。“执行时间”可接受即可,纠结这个作甚。

【在 c********l 的大作中提到】
: Thanks
: 我大致明白你的思路
: 但是这个算法有两个缺点
: 1.你这是假定原有srt文件中没有制表符\t,如果原文中有\t怎么办?
: 你又找找另外一种特殊字符....
: 2.srt文件扫描两次,而不是一次。文件小的时候无所谓,但文件大的时候影响执行效
: 率.....
: 另外有很多例子,就比如for (int i=1; i
p**o
发帖数: 3409
17
不必过于执迷于C风格的for-loop,对于从Pascal过来的人,C的for-loop实在是很2B的
写法,明明干的是几件事,非要挤在一行里写,还隐含了i 。要认识到这是C的糟粕,现代语言的设计师都想方设法摒弃之,而不是因为C的统治现
实而视之为至宝。

【在 p*****2 的大作中提到】
:
: http://www.mitbbs.com/article_t/Programming/31243367.html

s*****V
发帖数: 21731
18
如果你要做的举证运算,MODULE里面没有呢?

【在 E*****m 的大作中提到】
: 用 numpy, 一個計數器都不需要。
1 (共1页)
进入Programming版参与讨论
相关主题
macro is evil转:王垠--一种新的操作系统设计
为什么design pattern对FP language来说就是渣今天跟公司confirm了,没有人用Scala
问题请教脚本比较大的问题就是DEBUG
^M字符是什么意思? (转载)Scala is simple, but not trivial. It’s sophisticated, but not complex.
请帮忙看一下这个c程序(更新)FP的好处是不是就是Concurrency?
python 小问题python有什么类似Rstudio或者matlab的IDE吗?
问个SHELL SCIPT的问题玩具语言其实很容易实现的
python能检查出space是一个还是两个吗?实践clojure的话有什么库或者框架适合玩
相关话题的讨论汇总
话题: 00话题: srt话题: nx话题: tx话题: string