鱼C论坛

 找回密码
 立即注册
查看: 1369|回复: 18

python3 列表的用法

[复制链接]
发表于 2019-3-26 10:34:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
I asked Sir Andrew who he was, and he answered impatiently: "Sir Nancy and I are Knaves!"

针对这一句话,我要从文件中把这一句话切割后存到列表中, 以 感叹号 为切割点,但是我切完之后发现后面那个双引号不见了,那么我该如何解决这个问题?就是希望感叹号和双引号能够换下位置,不会切割完后双引号不见了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-26 10:40:18 | 显示全部楼层
你这里就一个叹号,换了位置还用切吗,而且你换了位置也不是正常句子的结构
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 10:43:00 | 显示全部楼层
有规律的才好分割  没有规律的咋分??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 10:46:03 | 显示全部楼层
塔利班 发表于 2019-3-26 10:40
你这里就一个叹号,换了位置还用切吗,而且你换了位置也不是正常句子的结构

这是一段话里面的一个句子而已,其他的都切出来了,就是这个双引号在我要切割的字符后面,这样的话双引号就跑到下一句话那里了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 10:46:52 | 显示全部楼层
wp231957 发表于 2019-3-26 10:43
有规律的才好分割  没有规律的咋分??

啥规律啊? 就是想切割这句话而已啊。。还有很多话,但是,就这个切割又问题,双引号不见了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 10:50:00 | 显示全部楼层
lou 发表于 2019-3-26 10:46
这是一段话里面的一个句子而已,其他的都切出来了,就是这个双引号在我要切割的字符后面,这样的话双引号 ...

那你就不是按叹号分割,而是按引号分割
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 10:54:27 | 显示全部楼层
塔利班 发表于 2019-3-26 10:50
那你就不是按叹号分割,而是按引号分割

不不不,我就是想按叹号分割,然后保留双引号,因为如果引号分的话,那很多话就乱套了。。。
  比如,小明说”今天天气很好!“ 小李说”今天太阳很大!“
我想输出的是 list = [' 小明说“今天天气很好” ‘,‘小李说“今天太阳很大!” ’]
如果你按引号分,那我这两句话岂不是就乱套了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:04:16 | 显示全部楼层
lou 发表于 2019-3-26 10:54
不不不,我就是想按叹号分割,然后保留双引号,因为如果引号分的话,那很多话就乱套了。。。
  比如, ...

你这只需要判断奇偶数的引号,如果是英文引号
如果是中文双引号,双引号左右不一样,按后边的分割再补上后边的就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:05:58 | 显示全部楼层
  1. a="I asked Sir Andrew who he was, and he answered impatiently: "Sir Nancy and I are Knaves!"i am a test"
  2.   s=a.find(""")
  3.   s=a.find(""",s+1)
  4.   str=a[0:s+1]
  5.   print(str)
复制代码


这样行吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:12:58 | 显示全部楼层
当然 你也可以使用!分割

  1. a="I asked Sir Andrew who he was, and he answered impatiently: "Sir Nancy and I are Knaves!"i am a test"
  2. s=a.find("!")
  3. str=a[0:s+2]
  4. print(str)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 11:21:37 | 显示全部楼层
wp231957 发表于 2019-3-26 11:12
当然 你也可以使用!分割

还差一点。。。就是能否,按照!切割,然后感叹号不见了,但是双引号还在那一句话里面,
比如,小明说”今天天气很好!”  小李说”今天太阳很大!“
然后理想的输出的形式  list = [‘小明说”今天天气很好“’,‘小李说”今天太阳很大“’]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 11:23:00 | 显示全部楼层
塔利班 发表于 2019-3-26 11:04
你这只需要判断奇偶数的引号,如果是英文引号
如果是中文双引号,双引号左右不一样,按后边的分割再补上 ...

不太能理解- -  。。 能麻烦码一下吗 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:24:09 From FishC Mobile | 显示全部楼层
本帖最后由 wp231957 于 2019-3-26 11:31 编辑
lou 发表于 2019-3-26 11:21
还差一点。。。就是能否,按照!切割,然后感叹号不见了,但是双引号还在那一句话里面,
比如,小明说 ...


a="I asked Sir Andrew who he was, and he answered impatiently: \"Sir Nancy and I are Knaves!\"i am a test"
s=a.find("!")
str=a[0:s]+a[s+1:s+2]
print(str)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 11:34:56 | 显示全部楼层
切割后,循环遍历一下那个得到的list列表,根据引号的数量和方向判断这个字符串是多了引号还是少了引号,多了就删,少了就加
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 11:39:52 | 显示全部楼层
shake_a_tree@16 发表于 2019-3-26 11:34
切割后,循环遍历一下那个得到的list列表,根据引号的数量和方向判断这个字符串是多了引号还是少了引号,多 ...

能码一下吗? 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 13:20:45 | 显示全部楼层
txt =  "I asked Sir Andrew who he was,2 and he answered \
impatiently: \"00Sir Nancy and 0I are Knaves!\" 66 54 88 !\
impatiently: \"22Sir Nancy and I 2are Knaves!\" 76 66 35 !\
impatiently: \"55Sir Nancy and5 I are Knaves!\" 54 66 98 !"

print('--------------')
print(txt)

str0 = txt.split('!')
print('--------------')
print('处理前分割效果')
for s in str0:
    print(s)
   
#处理字符串
for i in range(len(str0) - 1):
    print(i)
    count = 0;
    for s in str0[i]:
        if s == "\"":
            count += 1
    if((count % 2 == 1) and str0[i+1].startswith('"')):
        str0[i] = str0[i] + '"'
        str0[i+1] = str0[i+1][1:]

print('--------------')
print('处理后分割效果')
for s in str0:
    print(s)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 13:23:28 | 显示全部楼层
我这里是是判断了双引号数量是不是偶数,以及下一个字符串的开头是不是双引号,这两个条件来决定要不要把双引号补上。另外,这个也只是考虑的英文双引号,没有区分左右引号,如果是中文的还要区分左右引号。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-26 23:20:45 | 显示全部楼层
切完加上去就可以了
a = "ssss!"
b = a.spilt("!")+"\""

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
260748080 + 5 + 5 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-28 09:58:33 | 显示全部楼层
Stubborn 发表于 2019-3-26 23:20
切完加上去就可以了
a = "ssss!"
b = a.spilt("!")+"\""

那不行啊,我这只是一个测试case
而在其他case的句子会有单单只有感叹号的句子,所以我并不是每个感叹号后面都需要加上双引号的。
例如, 故宫的建筑面积很大!,小明说“对,它真的很大!”   
那像这第一句话我就不需要加上引号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-14 19:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表